Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Xcode

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

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Final product image
What You'll Be Creating

Последняя версия 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 9.
  • Иметь учетную запись GitHub.

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

Connecting your GitHub account from within Xcode

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

Two-Factor Authentication is supported in Xcode 9

Просмотр и поиск репозиториев GitHub

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

Welcome to Xcode 9

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

Searching for a GitHub project in Xcode 9

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

Checking out a project in Xcode 9

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

Opening an Xcode project directly from GitHub

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

SCM settings in Xcode 9

Правильно: если вы нажмете на него, он автоматически откроет проект в Xcode, который будет клонирован и загружен.

Вернемся к нашему проекту. Поскольку мы используем CocoaPods для управления зависимостями, нам нужно будет вернуться в командный терминал и запустить pod install:

Теперь наш проект должен быть настроен локально, и ваш .xcworkspace должен быть открыт в Xcode со всеми файлами в вашем проекте.

Настройки Xcode SCM

Перейдя в настройки Xcode, а затем выбрав Source Control, вы можете изменить различные аспекты своего поведения прямо из области настроек, включая имя автора Git и электронную почту, и, что интересно, даже обновить свои настройки .gitignore.

Связывание нового проекта с GitHub

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

Setting a remote master in Xcode 9

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

Creating a GitHub Repository from within Xcode 9

Изучение нового интерфейса SCM

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

Xcode 9s overview of SCM

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

Навигатор Source Control

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

История фиксаций

Давайте посмотрим на перспективу Commit History, в которой показан список коммитов для проекта, включая имя автора сообщения, дату, описание, а также аватар автора из GitHub.

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

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

Filtering commits in Xcode 9

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

Right-hand pane in Xcode 9

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

Comparing versions of a file for a commit

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

Xcode 9s new comparison perspective panes

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

Contextual menu for commits

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

Creating a tag

Именование ваших тегов в этом формате, установив родительскую группу (выпуск, бета и т.д.), cлужит интересной цели, о которой мы вскоре узнаем. Пока, поскольку мы отметили фиксацию, мы перейдем к следующей теме: ветвление.

Ветки

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

Looking at branches in Xcode 9

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

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

Comparison of changes for an active commit

Когда ваша feature ветка завершена, мы хотим объединить ее обратно в master ветку. Щелкните правой кнопкой мыши на главной ветке и выберите вторую опцию слияния: Merge from "readme_changes" into "master".

Merging commits into the master

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

Commit count from remote master

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

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

Тегирование

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

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

Grouping tags together in Xcode 9

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

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

Заключение

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

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

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.