Жизненный цикл SVN
В этой главе рассматривается жизненный цикл системы контроля версий.
Создание репозитория
Репозиторий — это как централизованное пространство, используемое для хранения всех результатов работы разработчиков. Репозиторий может не только хранить файлы, но и включает историю каждого изменения, то есть историю изменений каждого файла.
Операция Create используется для создания нового репозитория. В большинстве случаев эта операция выполняется только один раз. Когда вы создаёте новый репозиторий, ваша система контроля версий попросит вас предоставить некоторую информацию для идентификации репозитория, например место создания и имя репозитория.
Checkout
Операция Checkout используется для создания рабочей копии из репозитория. Рабочая копия — это личное рабочее пространство разработчика, в котором содержимое можно изменять, а затем фиксировать в репозитории.
Update
Как следует из названия, операция update используется для обновления репозитория. Эта операция синхронизирует рабочую копию с репозиторием. Поскольку репозиторий является общим для всей команды, когда другие фиксируют свои изменения, ваша рабочая копия становится устаревшей.
Предположим, Том и Джерри — два разработчика в проекте. Они одновременно извлекают последнюю версию из репозитория и начинают работать. В этот момент рабочие копии полностью синхронизированы с репозиторием. Затем Джерри эффективно завершает свою работу и фиксирует изменения в репозитории.
В этот момент рабочая копия Тома становится устаревшей. Операция update извлечет последние изменения Джерри из репозитория и обновит рабочую копию Тома.
Выполнение изменений
После Checkout можно выполнять множество операций для внесения изменений. Редактирование — наиболее распространенная операция. Вы можете редактировать существующие файлы, например добавлять/удалять файлы.
Вы можете добавлять файлы/каталоги. Однако эти добавленные файлы/каталоги не сразу становятся частью репозитория; вместо этого они добавляются в список изменений (список ожидающих изменений) и станут частью репозитория только после выполнения операции commit.
Аналогично можно удалять файлы/каталоги. Операция delete сразу удаляет файл из рабочей копии, но фактическое удаление файла только добавляется в список изменений (список ожидающих изменений) и будет действительно удалено только после выполнения операции commit.
Операция Rename может изменить имя файла/каталога. Операция «Move» используется для перемещения файла/каталога из одного места в другое в репозитории.
Просмотр изменений
После того как вы извлечете рабочую копию или обновите ее, рабочая копия полностью синхронизируется с репозиторием. Однако после внесения некоторых изменений в рабочую копию она станет новее репозитория. Полезная привычка — просматривать свои изменения перед операцией commit.
Операция Status выводит список изменений, сделанных в рабочей копии. Как упоминалось ранее, любые изменения, внесенные вами в рабочую копию, становятся частью списка изменений (списка ожидающих изменений). Операция Status используется для просмотра этого списка изменений.
Операция Status предоставляет только список изменений, но не дает подробной информации об изменениях. Вы можете использовать операцию diff, чтобы просмотреть подробную информацию об этих изменениях.
Исправление ошибок
Предположим, вы внесли много изменений в рабочую копию, но теперь эти изменения больше не нужны. В этом случае вам поможет операция revert.
Операция Revert сбрасывает изменения в рабочей копии. Она может сбросить один или несколько файлов/каталогов. Конечно, она также может сбросить всю рабочую копию. В этом случае операция revert уничтожит список изменений (список ожидающих изменений) и восстановит рабочую копию в исходное состояние.
Разрешить конфликты
Конфликты могут возникать при слиянии. Операция Merge автоматически обрабатывает то, что можно безопасно объединить. Остальное считается конфликтами. Например, файл "hello.c" изменен в одной ветви и удален в другой ветви. Эта ситуация требует ручного вмешательства. Операция Resolve используется, чтобы помочь пользователям выявить конфликты и сообщить репозиторию, как обрабатывать эти конфликты.
Фиксация изменений
Операция Commit используется для переноса изменений из рабочей копии в репозиторий. Эта операция изменяет содержимое репозитория, и другие разработчики могут просмотреть эти изменения, обновив свои рабочие копии.
Перед фиксацией необходимо добавить файлы/каталоги в список изменений (список ожидающих изменений). В списке фиксируются изменения, которые будут зафиксированы. При фиксации мы обычно указываем комментарий, объясняющий, почему были внесены эти изменения. Этот комментарий также становится частью истории репозитория. Фиксация — атомарная операция: она либо полностью успешно фиксируется, либо завершается неудачей и откатывается. Пользователи никогда не увидят частично успешную фиксацию.
Другие расширения