Статьи

Что нового с поддержкой Git в Xcode 9

Конечный продукт
Что вы будете создавать

Последняя версия 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.

Для того, чтобы использовать новые функции SCM Xcode, вам необходимо:

После того, как вы загрузили и установили последнюю версию сборки Xcode и имеете текущую учетную запись GitHub, вы готовы подключить свою учетную запись GitHub к Xcode 9. Запустите Xcode и перейдите в « Настройки» > « Учетные записи» . Затем нажмите кнопку + в левом нижнем углу, чтобы добавить новую учетную запись.

Подключение вашей учетной записи GitHub из Xcode

Выберите GitHub из модального окна и введите свои учетные данные GitHub. Если вы используете двухфакторную аутентификацию, Xcode предложит вам ввести ваш код.

Двухфакторная аутентификация поддерживается в Xcode 9

Давайте посмотрим, как легко вы можете просматривать существующие публичные репозитории GitHub прямо из Xcode. Откройте экран приветствия XCode, если он еще не отображается, перейдя в Window > Welcome to XCode .

Добро пожаловать в Xcode 9

Затем выберите « Клонировать существующий проект» , который выведет список репозиториев на GitHub, которым вы в настоящее время владеете, над которым работаете или уже играли главную роль.

Поиск проекта GitHub в Xcode 9

Помимо представленного в нем списка, вы также можете искать общедоступное репо (или частное репо, к которому у вас есть доступ) по имени или вводя его URL-адрес GitHub. Для нашего учебного пособия введите RealmDo и нажмите « Клонировать» , а затем выберите локальный каталог для клонирования проекта.

Извлечение проекта в Xcode 9

Затем он попросит у вас каталог для проверки проекта:

Открытие проекта Xcode прямо из GitHub

Вместо того, чтобы извлекать репозиторий проекта из XCode, еще одна изящная функция заключается в том, что вы можете открыть репозиторий GitHub в браузере и выбрать « Клонировать» или «загрузить», и вы увидите новую кнопку с надписью « Открыть в XCode» .

Настройки SCM в Xcode 9

Это верно: если вы нажмете на него, он автоматически откроет проект в 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 и выбрав « Контроль источника» , вы можете изменить различные аспекты его поведения прямо из панели настроек, включая имя автора Git и адрес электронной почты, и, что интересно, даже обновить настройки .gitignore .

С другой стороны, если вы создали новый проект Xcode и еще не создали проект на GitHub, вы можете создать новый проект GitHub непосредственно из Xcode. Щелкните правой кнопкой мыши на Remotes и выберите « Создать RealmDo» Remote на GitHub .

Setting a remote master in Xcode 9

Затем Xcode попросит вас дать хранилищу имя и выбрать учетную запись, с которой он будет связан.

Создание репозитория GitHub из Xcode 9

Давайте рассмотрим каждый из разделов нового интерфейса.

Xcode 9s обзор SCM

  1. На левой панели есть знакомый список значков для доступа к свойствам проекта. Вторая вкладка совершенно новая: это навигатор управления исходным кодом.
  2. Панель « История коммитов» — наиболее заметная часть навигатора, показывающая исторический список коммитов для проекта и ветви.
  3. Правая панель предоставляет вам дополнительную контекстную информацию о ветви и выбранных коммитах.
  4. Наряду с контекстной веткой и информацией о фиксации, этот подраздел справа показывает вам, какие файлы были частью выбранной фиксации.
  5. Левая панель дает вам иерархическое представление вашего проекта с точки зрения SCM, показывая вам текущую ветку, любые другие ветви, локальные или удаленные, и теги. Он также сигнализирует о том, есть ли новые коммиты, которые нужно нажать или вытащить, как вы увидите позже.

Одной из первых вещей, которые мы исследуем в Xcode 9, является навигатор управления исходным кодом, совершенно новый для Xcode 9. Теперь он не является представителем исходного кода гражданина второго сорта — теперь он полностью встроен в Xcode. Выберите второй значок на левой панели, как указано (1) на снимке экрана выше, чтобы открыть Навигатор управления исходным кодом.

Давайте посмотрим на перспективу «История коммитов», которая показывает список коммитов для проекта, включая имя автора коммита, дату, описание, а также аватар автора из GitHub, составляющий историю проекта.

Это очень четкая и прекрасно организованная перспектива. Хотя этот пример проекта довольно редок в плане истории (хотя мы скоро это изменим), эта панель обманчиво мощна.

Помимо возможности легко прокручивать и получать полезную историческую информацию, вы также можете интуитивно фильтровать и осуществлять поиск по ревизии, сообщению или автору. Фактически, вы можете объединять или объединять несколько фильтров для поиска не только по автору, но и по редакции. Вы также можете выполнять поиск с помощью панели «Область», по определенным периодам дат, таким как последние 24 часа , последние 7 дней или последние 30 дней .

Фильтрация коммитов в Xcode 9

Выбор конкретного коммита выводит некоторую дополнительную информацию на правой панели. Наряду с информацией о ветке вы получаете информацию о коммите, полный SHA, автора, сообщение и дату. Вы также видите список файлов, созданных во время этого коммита, что чрезвычайно полезно, чтобы помочь вам точно определить коммит, который вызвал проблему во время отладки.

Правая панель в Xcode 9

Двойной щелчок по коммиту выводит список файлов, которые были изменены в этом коммите, в левой панели, и сравнение версий будет отображаться спереди и по центру. Это знакомая перспектива сравнения, но в этот раз она значительно улучшилась.

Сравнение версий файла для коммита

Выбор помощника редактора в верхнем правом углу позволяет получить действительно великолепное представление различий, которое позволяет не только просматривать различия в файлах, но также легко просматривать предыдущие коммиты и просматривать информацию о коммитах, а также фактическую изменения файла

Xcode 9s новые перспективные панели сравнения

Щелкнув правой кнопкой мыши на коммите, вы также можете увидеть меню, которое позволяет вам связаться с автором, скопировать информацию о коммите, перейти из этого коммита или даже открыть коммит на GitHub в браузере.

Контекстное меню для коммитов

Вы также можете создать тег, что мы и собираемся сделать. Нажмите кнопку Tag на первом коммите и назовите его release/0.1 .

Создание тега

Наименование тегов в этом формате путем установки родительской группы (релиз, бета-версия и т. Д.) Служит интересной цели, о которой мы вскоре узнаем. А пока мы пометили коммит, перейдем к следующей теме: ветвление.

В настоящее время мы разрабатываем основную ветку, но во время нормального рабочего процесса мы обычно работаем в отдельной ветке. Мы создали ветку для разработки и тестирования функции, а затем слили ее обратно в основную ветку, когда она работает правильно. Давайте создадим новую ветку, щелкнув правой кнопкой мыши по мастеру и выбрав « Ветвь из мастера» . Вызовите новую ветку readme_changes .

Просмотр веток в Xcode 9

Я хочу продемонстрировать, как работает слияние, поэтому в новой ветке давайте зафиксируем наши изменения, выбрав Source Control > Commit . Это возвращает нас к представлению сравнения, давая нам возможность подтвердить все изменения, которые мы сделали в этом коммите, с возможностью сравнивать наши изменения построчно.

Когда вы проверили изменения, введите сообщение о коммите, подобное следующему. И обязательно установите флажок Push to remote .

Сравнение изменений для активного коммита

Когда наша функциональная ветвь завершена, мы хотим объединить ее с главной веткой. Щелкните правой кнопкой мыши на главной ветви и выберите второй вариант слияния: объединение из «readme_changes» в «master» .

Слияние коммитов в мастер

XCode затем объединится и автоматически переключит вас обратно в главную ветку. Вернувшись к основной ветке, вы увидите маленькую стрелку вверх с цифрой 1 справа от текущей ветви.

Фиксировать счет от удаленного мастера

Это позволяет нам знать, что у нас есть коммит, который нужно отправить в удаленный репозиторий. Если бы счет был равен 2 , мы были бы на два коммита впереди удаленного мастера.

И наоборот, если в мастере есть новые обновления, которые вы еще не извлекли, Xcode сообщит вам об этом. XCode будет извлекать данные с пульта дистанционного управления, уведомлять вас стрелкой вниз и считать, что вы находитесь за удаленным мастером.

Ранее мы создали тег для одного из предыдущих коммитов. Наблюдая за основной панелью, вы можете увидеть другой коммит, который был помечен. Левая панель позволяет легко просматривать краткий список всех тегов под ветвями.

Помните соглашение об именах, которое мы использовали для нашего тега, release/0.1 . Мы сделали это по причине. Создание тегов с иерархическим родителем позволяет Xcode группировать теги вместе.

Группировка тегов вместе в Xcode 9

В нашем случае у нас есть два тега, которые принадлежат к release родительскому тегу. Мы можем создать несколько логических групп для наших тегов по разным причинам, а Xcode упрощает организацию наших тегов.

При выборе конкретного тега наша история коммитов будет показывать только те коммиты, которые связаны с этим тегом, а это означает, что у нас есть полный манифест кодирования всех изменений, внесенных во время выпуска. Это поможет нам сузить любой проблемный код, специфичный для этого выпуска.

Xcode 9 — это огромный выпуск, и одна из самых больших новых функций заключается в том, что Apple наконец-то интегрировала SCM в качестве первоклассного гражданина IDE. Это разрешает давние проблемы, о которых многие разработчики говорили о том, как Xcode управляет совместной разработкой и управлением версиями.

В Xcode 9 не только GitHub легко вписывается в платформу, но и разработчики теперь получают прекрасный интерфейс управления кодом на новой вкладке SCM. Разработчики получают четкое представление об истории кода, коммитах, слияниях, тегах и ветвлениях, а также о перспективах отладки и выявления коммитов, в которых были обнаружены ошибки. Любители Git и поклонники SCM по достоинству оценят инициативу Apple по консолидации действительно мощного инструмента управления Git в среде IDE.

Пока вы здесь, ознакомьтесь с некоторыми другими нашими статьями по разработке приложений для Xcode, Swift и iOS!

  • стриж
    Что нового в Swift 4
    Патрик Балестра
  • iOS SDK
    Ускоренный вход в систему с паролем автозаполнения в iOS 11
    Патрик Балестра
  • iOS SDK
    Realm Мобильная база данных для iOS
  • Мобильная разработка
    Как отправить приложение iOS в App Store
    Вардхан Агравал
  • iOS SDK
    3 ужасные ошибки разработчиков iOS
    Вардхан Агравал