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

Управление версиями — это способ периодического снятия снимков (формально называемых фиксациями (commits)) вашего проекта. Оно имеет следующие цели.

 

Безопасность

Система управления версиями может помочь вам хранить копии в автономном репозитарии, чтобы ваш код не был потерян в случае локального сбоя на компьютере или другого “несчастного случая”

 

Сотрудничество

Управление версиями позволяет нескольким разработчикам работать с одним и тем же кодом.

 

Свобода от страха

Проект — сложная вещь; часто изменения должны вноситься экспериментально, иногда сразу во многие файлы, иногда в течение многих дней, прежде чем новая функциональная возможность будет протестирована. Управление версиями означает, что программист может легко отследить свои действия (до предыдущей фиксации), если что-то получится плохо; это придает ему смелости предпринимать попытки, в успехе которых он не уверен. Кроме того, если программист сомневается в правильности выбранного пути, он может попросить систему управления версиями перечислить изменения, которые сделаны им недавно. Если обнаружится ошибка, он может вернуться к нужной версии и выявить проблему.

Среда Xcode имеет несколько механизмов управления версиями, основанных на системах Git (http ://git-scm. com) и Subversion (http: //subversion . apache . org, которая также называется SVN). Это не значит, что любую другую систему управления версиями в своем проекте использовать невозможно! Это лишь значит, что нельзя использовать любую другую систему управления версиями как интегрированную часть среды Xcode. Это не страшно, так как для управления версиями существует много других способов, и даже системы Git и Subversion можно использовать, игнорируя среду Xcode и работая с системой управления версиями в режиме командной строки в окне Terminal или использовать графический пользовательский интерфейс сторонних разработчиков, таких как svnX for Subversion (http: //www. lachoseinteractive. net/en/products) или SourceTree for git (http: //www. sourcetreeapp . com).

 

Если вы не хотите использовать систему управления версиями, интегрированную в среду Xcode, можно просто ее отключить (частично или полностью). Если снять флажок Enable Source Control в окне настроек Source Control, то можно лишь выбрать команду Check Out в меню Source Control, чтобы загрузить код с удаленного сервера. Если установить флажок Enable Source Control, то три дополнительных флажка позволят выбрать автоматический режим. Лично я предпочитаю устанавливать флажки Enable Source Control и Refresh local status automatically, чтобы среда Xcode отображала статус файла в окне навигатора проекта; остальные два флажка я оставляю сброшенными, потому что управляю версиями вручную. (Возможность сбросить флажок Add and remove files automatically в среде Xcode 5 особенно полезна; в среде Xcode 4 добавление файлов в индекс системы Git в момент добавления в проект было неудобным.)

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

Открывая существующий проект, использующий системы Subversion или Git, среда Xcode обнаруживает этот факт и может мгновенно отображать информацию о версии в окне интерфейса. Если используется удаленный репозитарий, среда Xcode автоматически включает информацию об этом в окно настроек Accounts, которое в среде Xcode 5 является унифицированным интерфейсом для управления репозитарием. Для того чтобы использовать удаленный сервер без проверки рабочей версии, введите эту информацию в окне настроек Accounts.

Если вы установили флажок Refresh local status automatically, файлы в окне навигатора проекта отображаются вместе со своим статусом. Например, если вы используете систему Git, то можете различать модифицированные файлы (М), новые неотслеженные файлы (?) и новые файлы, добавленные в индекс (А).

Действия, связанные с реальным управлением версиями, можно выполнить в меню Source Control (впервые включенное в верхний уровень в среде Xcode 5) и в контекстное меню в навигаторе проекта. Для того чтобы проверить и открыть проект, хранящийся на удаленном сервере, выберите команду Source Control^ Check Out. Другие пункты меню Source Control очевидны, например Commit, Push, Pull (or Update), Refresh Status и Discard Changes. Особенно отметим первый пункт в меню Source Control (новшество в среде Xcode 5), в котором перечислены все открытые рабочие версии по именам и ветвям; это иерархическое меню позволяет осуществлять управление ветвями.

Выбрав команду Source Control^Commit, вы увидите представление сравнения всех измененных файлов. Из этой фиксации можно исключить как отдельные, так сразу все изменения, чтобы группа связанных файлов образовала совокупность осмысленных фиксаций. Аналогичное представление сравнений для любой фиксации можно открыть с помощью команды Source Controls History. (Правда, среда Xcode все еще не поддерживает представление ветвей с помощью инструмента gitk.) Конфликты слияний также изображаются с помощью удобного графического интерфейса, демонстрирующего сравнения.

Существует также возможность в любой момент времени сравнивать разные версии редактируемого файла с помощью редактора версий; для этого необходимо выбрать команду View^Version EditorOShow Version Editor или щелкнуть на третьей кнопке Editor инструментальной панели окна проекта. Редактор версий может работать в трех режимах: в режиме сравнения (Comparison view), режиме осуждения (Blame view) и режиме регистрации (Log view). Для выбора режима необходимо выбрать команду View ^Version Editor или использовать раскрывающийся список, который открывается после щелчка на третьей кнопке Editor инструментальной панели в окне редактора версий).

Например, как показано на рис. 9.1, в этом окне можно увидеть, что в последней версии данного файла (слева) я больше не использую явно объект класса NSStringDrawing Context: в качестве аргумента метода context:. Если выбрать команду Editor О Сору Source Changes, соответствующий файл dif f помещается в буфер. Если переключиться в режим осуждения, то можно увидеть мое собственное сообщение фиксации: “eliminated NSStr ingDrawingContext”. Панель быстрых переходов внизу окна редактирования версий позволяет просматривать в редакторе любую версию фиксации текущего файла.

 

 Сравнение версий

Рис. 9.1. Сравнение версий

 

Другой способ узнать, как изменилась строка, который впервые появился в среде Xcode 5, — выделить часть этой строки (в обычном редакторе) и выбрать команду EditorOShow Blame For Line. На экране появится всплывающее окно, описывающее фиксацию, в которой эта строка приняла текущий вид. Используя кнопки в этом всплывающем окне, можно провести непосредственное сравнение версий этой фиксации или переключиться в режим осуждения или сравнения.

В среде Xcode также есть собственный механизм создания и хранения копий вашего проекта в целом. Для этого необходимо выбрать команду File^Create Snapshot (в соответствии с вашими настройками некоторым массовым операциям, таким как Найти и заменить или Выполнить рефакторинг, может предшествовать создание копий). Несмотря на то что эти копии нельзя считать полноценной системой управления версиями, фактически они поддерживаются репозитариями системы Git и могут подстраховывать программиста перед внесением изменений, о которых он впоследствии может пожалеть. Копиями можно управлять на вкладке Projects в окне Organizer, здесь можно экспортировать копии, возвращаясь к предыдущему состоянию папки проекта.


 

 

 

Добавить комментарий