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



Последняя версия 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
:
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! There is 1 dependency from the Podfile and 2 total pods installed.
Теперь наш проект должен быть настроен локально, и ваш .xcworkspace
должен быть открыт в Xcode со всеми файлами в вашем проекте.
Настройки Xcode SCM
Перейдя в настройки Xcode, а затем выбрав Source Control, вы можете изменить различные аспекты своего поведения прямо из области настроек, включая имя автора Git и электронную почту, и, что интересно, даже обновить свои настройки .gitignore
.
Связывание нового проекта с GitHub
С другой стороны, если вы создали новый проект Xcode и еще не создали проект на GitHub, вы можете создать новый проект GitHub непосредственно из Xcode. Щелкните правой кнопкой мыши на Remotes, а затем выберите Создать RealmDo Remote на GitHub.



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



Изучение нового интерфейса SCM
Давайте рассмотрим каждый из разделов нового интерфейса.
- На левой панели есть знакомый список значков для доступа к свойствам проекта. Вторая вкладка совершенно новая: это Навигатор управления версиями.
- Область История комитов является наиболее заметной частью навигатора, показывая вам исторический список коммитов для проекта и ветки.
- В правой панели представлена дополнительная контекстная информация о ветке и выбранных коммитах.
- Наряду с информацией о контекстной ветке и фиксации этот подраздел в правой части показывает вам, какие файлы были частью выбранной фиксации.
- Левая панель дает вам иерархическое представление вашего проекта с точки зрения SCM, показывая вам текущую ветку, любые другие ветви, будь то локальные или удаленные, и теги. Она также сигнализирует, есть ли новые коммиты, которые нужно запушить или вытащить, как вы увидите позже.
Навигатор Source Control
Одной из первых вещей, которые мы рассмотрим в Xcode 9, является Навигатор управления версиями, совершенно новый для Xcode 9. Теперь он полностью встроен в Xcode. Выберите второй значок на левой панели, как показано на (1) на скриншоте выше, чтобы открыть Навигатор управления версиями.
История фиксаций
Давайте посмотрим на перспективу Commit History, в которой показан список коммитов для проекта, включая имя автора сообщения, дату, описание, а также аватар автора из GitHub.
Это очень четкая и красиво организованная перспектива. Хотя этот примерный проект с довольно слабой историей (хотя мы скоро это изменим), эта панель обманчиво мощна.
Помимо возможности легко прокручивать и получать полезную историческую информацию, вы также можете интуитивно фильтровать и выполнять поиск по версии, сообщению или автору. Фактически, вы можете подключать или присоединяться к нескольким фильтрам, искать не только по автору, но и по ревизии. Вы также можете выполнять поиск с помощью панели «Область» по конкретным датам, таким как последние 24 часа, последние 7 дней или последние 30 дней.



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



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



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



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



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



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



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



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



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



Это позволяет нам знать, что у нас есть фиксация, которую нужно отправить в удаленный репозиторий. Если счетчик равен 2, мы должны были бы совершить две фиксации перед удаленным мастером.
И наоборот, если в мастере есть новые обновления, которые вы еще не вытащили, Xcode сообщит вам об этом. Xcode будет извлекать удалённые данные и уведомлять вас стрелкой вниз и считать, что вы находитесь за удаленным мастером.
Тегирование
Ранее мы создали тег на одном из предыдущих коммитов. Наблюдая за первичной областью, вы можете увидеть другую фиксацию, помеченную тегом. Левая панель позволяет легко просмотреть краткий список всех тегов под ветвями.
Помните соглашение об именах, которое мы использовали для нашего тега, release/0.1
. Мы сделали это по определённой причине. Создание тегов с иерархическим родителем позволяет Xcode группировать теги вместе.



В нашем случае у нас есть два тега, которые принадлежат родительскому тегу release
. Мы можем создавать несколько логических групп для наших тегов по разным причинам, а Xcode упрощает организацию наших тегов.
Выбирая конкретный тег, наша история фиксации будет отображать только коммиты, связанные с этим тегом, что означает, что у нас есть полный код для всех изменений, внесенных во время релиза. Это поможет нам сузить любой проблемный код, специфичный для этой версии.
Заключение
Xcode 9 - это огромный релиз, и одна из самых больших новых функций - это то, что Apple наконец-то интегрировала SCM. Это решает давнюю проблему, которую многие разработчики высказали о том, как Xcode управляет совместной разработкой и управлением версиями.
В Xcode 9 не только GitHub плавно смешивается с платформой, но теперь разработчики получают красивый интерфейс управления версиями на новой вкладке SCM. Разработчики получают окончательное представление об истории кода, компиляции, слияниях, тегах и ветвях, а также о передовых перспективах для отладки и идентификации коммитов. Любители Git и поклонники SCM по-настоящему оценят инициативу Apple по консолидации действительно мощного инструмента управления Git внутри своей IDE.
Пока вы здесь, ознакомьтесь с некоторыми из наших других сообщений о разработке приложений Xcode, Swift и iOS!
- SwiftЧто нового в Swift 4Патрик Балестра
- SDK для iOSБыстрый вход с автозаполнением пароля в iOS 11Патрик Балестра
- SDK для iOSБаза данных Realm для iOSДорон Кац
- Мобильная разработкаКак отправить приложение iOS в App StoreВардхан Агравал
- SDK для iOS3 ужасных ошибки разработчиков iOSВардхан Агравал