Последняя версия IDE от Apple, Xcode 9 , выходит вместе с iOS 11 в сентябре этого года. И это огромное обновление! Поклонники Git для управления исходным кодом (SCM) — большие победители в этой следующей версии.
Предыдущие версии Xcode имели поддержку SCM, но никогда не считались первоклассным гражданином. Поддержка Git в Xcode была глючной и слабой, по сравнению со специализированными инструментами, такими как SourceTree , что означало, что разработчикам приходилось переключаться между инструментами, чтобы иметь возможность выполнять расширенные задачи управления Git-репозиториями.
Все это изменилось в Xcode 9. Apple больше не рассматривает SCM как вторичную, а вместо этого выбрала тесную интеграцию с GitHub и тесно сотрудничает с GitHub для Xcode 9.
В результате вы можете войти в свою учетную запись GitHub прямо из Xcode, чтобы просматривать, перемещаться и клонировать свои репозитории GitHub. Вы также можете искать другие репозитории, не переключаясь в окно браузера. И наоборот, если в вашем браузере открыто хранилище GitHub, вы можете нажать кнопку клонирования, и Xcode автоматически клонирует и откроет проект.
Как заявляет Apple, «поддержка Git теперь находится впереди и в центре», и Apple представила новый навигатор управления исходным кодом, поэтому вам не нужно открывать новое окно, которое визуально отделено от остальной части XCode. Теперь разработчики могут просматривать ветки, теги и удаленные устройства через четкую и интуитивно понятную временную шкалу, они могут более детально просматривать коммиты и видеть более элегантное и привлекательное сравнение изменений.
Цели этого урока
В этом уроке я познакомлю вас со списком новых функций SCM, которые были представлены в Xcode 9. Мы рассмотрим три основные области:
- фиксаций
- ветви
- теги
Предполагаемые знания
Чтобы следовать этому руководству, у вас должен быть некоторый предыдущий опыт работы с Xcode и некоторые практические знания по управлению исходным кодом через Git.
Начните с Xcode 9 SCM
Настройка вашей среды
Для того, чтобы использовать новые функции SCM Xcode, вам необходимо:
После того, как вы загрузили и установили последнюю версию сборки Xcode и имеете текущую учетную запись GitHub, вы готовы подключить свою учетную запись GitHub к Xcode 9. Запустите Xcode и перейдите в « Настройки» > « Учетные записи» . Затем нажмите кнопку + в левом нижнем углу, чтобы добавить новую учетную запись.
Выберите GitHub из модального окна и введите свои учетные данные GitHub. Если вы используете двухфакторную аутентификацию, Xcode предложит вам ввести ваш код.
Просмотр и поиск в GitHub репозиториях
Давайте посмотрим, как легко вы можете просматривать существующие публичные репозитории GitHub прямо из Xcode. Откройте экран приветствия XCode, если он еще не отображается, перейдя в Window > Welcome to XCode .
Затем выберите « Клонировать существующий проект» , который выведет список репозиториев на GitHub, которым вы в настоящее время владеете, над которым работаете или уже играли главную роль.
Помимо представленного в нем списка, вы также можете искать общедоступное репо (или частное репо, к которому у вас есть доступ) по имени или вводя его URL-адрес GitHub. Для нашего учебного пособия введите RealmDo и нажмите « Клонировать» , а затем выберите локальный каталог для клонирования проекта.
Затем он попросит у вас каталог для проверки проекта:
Вместо того, чтобы извлекать репозиторий проекта из XCode, еще одна изящная функция заключается в том, что вы можете открыть репозиторий GitHub в браузере и выбрать « Клонировать» или «загрузить», и вы увидите новую кнопку с надписью « Открыть в XCode» .
Это верно: если вы нажмете на него, он автоматически откроет проект в Xcode, который будет клонирован и загружен.
Вернуться к нашему проекту. Так как мы используем CocoaPods для управления зависимостями, нам нужно вернуться в командный терминал и запустить pod install
:
1
|
19:06 $ pod install Analyzing dependencies Downloading dependencies Using Realm (2.7.0) Using RealmSwift (2.7.0) Generating Pods project Integrating client project Sending stats Pod installation complete!
|
Наш проект теперь должен быть настроен локально, и ваше .xcworkspace
должно быть открыто в Xcode со всеми файлами в вашем проекте.
Настройки Xcode SCM
Перейдя к настройкам Xcode и выбрав « Контроль источника» , вы можете изменить различные аспекты его поведения прямо из панели настроек, включая имя автора Git и адрес электронной почты, и, что интересно, даже обновить настройки .gitignore
.
Ассоциирование нового проекта с GitHub
С другой стороны, если вы создали новый проект Xcode и еще не создали проект на GitHub, вы можете создать новый проект GitHub непосредственно из Xcode. Щелкните правой кнопкой мыши на Remotes и выберите « Создать RealmDo» Remote на GitHub .
Затем Xcode попросит вас дать хранилищу имя и выбрать учетную запись, с которой он будет связан.
Изучение нового интерфейса SCM
Давайте рассмотрим каждый из разделов нового интерфейса.
- На левой панели есть знакомый список значков для доступа к свойствам проекта. Вторая вкладка совершенно новая: это навигатор управления исходным кодом.
- Панель « История коммитов» — наиболее заметная часть навигатора, показывающая исторический список коммитов для проекта и ветви.
- Правая панель предоставляет вам дополнительную контекстную информацию о ветви и выбранных коммитах.
- Наряду с контекстной веткой и информацией о фиксации, этот подраздел справа показывает вам, какие файлы были частью выбранной фиксации.
- Левая панель дает вам иерархическое представление вашего проекта с точки зрения SCM, показывая вам текущую ветку, любые другие ветви, локальные или удаленные, и теги. Он также сигнализирует о том, есть ли новые коммиты, которые нужно нажать или вытащить, как вы увидите позже.
Навигатор управления исходным кодом
Одной из первых вещей, которые мы исследуем в Xcode 9, является навигатор управления исходным кодом, совершенно новый для Xcode 9. Теперь он не является представителем исходного кода гражданина второго сорта — теперь он полностью встроен в Xcode. Выберите второй значок на левой панели, как указано (1) на снимке экрана выше, чтобы открыть Навигатор управления исходным кодом.
Фиксируйте историю
Давайте посмотрим на перспективу «История коммитов», которая показывает список коммитов для проекта, включая имя автора коммита, дату, описание, а также аватар автора из GitHub, составляющий историю проекта.
Это очень четкая и прекрасно организованная перспектива. Хотя этот пример проекта довольно редок в плане истории (хотя мы скоро это изменим), эта панель обманчиво мощна.
Помимо возможности легко прокручивать и получать полезную историческую информацию, вы также можете интуитивно фильтровать и осуществлять поиск по ревизии, сообщению или автору. Фактически, вы можете объединять или объединять несколько фильтров для поиска не только по автору, но и по редакции. Вы также можете выполнять поиск с помощью панели «Область», по определенным периодам дат, таким как последние 24 часа , последние 7 дней или последние 30 дней .
Выбор конкретного коммита выводит некоторую дополнительную информацию на правой панели. Наряду с информацией о ветке вы получаете информацию о коммите, полный SHA, автора, сообщение и дату. Вы также видите список файлов, созданных во время этого коммита, что чрезвычайно полезно, чтобы помочь вам точно определить коммит, который вызвал проблему во время отладки.
Двойной щелчок по коммиту выводит список файлов, которые были изменены в этом коммите, в левой панели, и сравнение версий будет отображаться спереди и по центру. Это знакомая перспектива сравнения, но в этот раз она значительно улучшилась.
Выбор помощника редактора в верхнем правом углу позволяет получить действительно великолепное представление различий, которое позволяет не только просматривать различия в файлах, но также легко просматривать предыдущие коммиты и просматривать информацию о коммитах, а также фактическую изменения файла
Щелкнув правой кнопкой мыши на коммите, вы также можете увидеть меню, которое позволяет вам связаться с автором, скопировать информацию о коммите, перейти из этого коммита или даже открыть коммит на GitHub в браузере.
Вы также можете создать тег, что мы и собираемся сделать. Нажмите кнопку Tag на первом коммите и назовите его release/0.1
.
Наименование тегов в этом формате путем установки родительской группы (релиз, бета-версия и т. Д.) Служит интересной цели, о которой мы вскоре узнаем. А пока мы пометили коммит, перейдем к следующей теме: ветвление.
разветвление
В настоящее время мы разрабатываем основную ветку, но во время нормального рабочего процесса мы обычно работаем в отдельной ветке. Мы создали ветку для разработки и тестирования функции, а затем слили ее обратно в основную ветку, когда она работает правильно. Давайте создадим новую ветку, щелкнув правой кнопкой мыши по мастеру и выбрав « Ветвь из мастера» . Вызовите новую ветку readme_changes
.
Я хочу продемонстрировать, как работает слияние, поэтому в новой ветке давайте зафиксируем наши изменения, выбрав Source Control > Commit . Это возвращает нас к представлению сравнения, давая нам возможность подтвердить все изменения, которые мы сделали в этом коммите, с возможностью сравнивать наши изменения построчно.
Когда вы проверили изменения, введите сообщение о коммите, подобное следующему. И обязательно установите флажок Push to remote .
Когда наша функциональная ветвь завершена, мы хотим объединить ее с главной веткой. Щелкните правой кнопкой мыши на главной ветви и выберите второй вариант слияния: объединение из «readme_changes» в «master» .
XCode затем объединится и автоматически переключит вас обратно в главную ветку. Вернувшись к основной ветке, вы увидите маленькую стрелку вверх с цифрой 1 справа от текущей ветви.
Это позволяет нам знать, что у нас есть коммит, который нужно отправить в удаленный репозиторий. Если бы счет был равен 2 , мы были бы на два коммита впереди удаленного мастера.
И наоборот, если в мастере есть новые обновления, которые вы еще не извлекли, Xcode сообщит вам об этом. XCode будет извлекать данные с пульта дистанционного управления, уведомлять вас стрелкой вниз и считать, что вы находитесь за удаленным мастером.
Tagging
Ранее мы создали тег для одного из предыдущих коммитов. Наблюдая за основной панелью, вы можете увидеть другой коммит, который был помечен. Левая панель позволяет легко просматривать краткий список всех тегов под ветвями.
Помните соглашение об именах, которое мы использовали для нашего тега, release/0.1
. Мы сделали это по причине. Создание тегов с иерархическим родителем позволяет Xcode группировать теги вместе.
В нашем случае у нас есть два тега, которые принадлежат к release
родительскому тегу. Мы можем создать несколько логических групп для наших тегов по разным причинам, а Xcode упрощает организацию наших тегов.
При выборе конкретного тега наша история коммитов будет показывать только те коммиты, которые связаны с этим тегом, а это означает, что у нас есть полный манифест кодирования всех изменений, внесенных во время выпуска. Это поможет нам сузить любой проблемный код, специфичный для этого выпуска.
Вывод
Xcode 9 — это огромный выпуск, и одна из самых больших новых функций заключается в том, что Apple наконец-то интегрировала SCM в качестве первоклассного гражданина IDE. Это разрешает давние проблемы, о которых многие разработчики говорили о том, как Xcode управляет совместной разработкой и управлением версиями.
В Xcode 9 не только GitHub легко вписывается в платформу, но и разработчики теперь получают прекрасный интерфейс управления кодом на новой вкладке SCM. Разработчики получают четкое представление об истории кода, коммитах, слияниях, тегах и ветвлениях, а также о перспективах отладки и выявления коммитов, в которых были обнаружены ошибки. Любители Git и поклонники SCM по достоинству оценят инициативу Apple по консолидации действительно мощного инструмента управления Git в среде IDE.
Пока вы здесь, ознакомьтесь с некоторыми другими нашими статьями по разработке приложений для Xcode, Swift и iOS!