Назначение, терминология, применение

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

Под набором данных понимается список файлов в хранилище. 

СУВ можно использовать для хранения исходных кодов ядра Домино, кодов приложений (проектов) на Домино, истории изменений приложений, документации. Но имеется важное ограничение - слияние возможно только для текстовых файлов. 

При описании различных СУВ имеет место некоторая путаница терминов, поэтому дам своё понимание терминов.

Термины
  • сэйв (save) - сохранение изменений в среде разработки.

Выполняется разработчиком по мере необходимости. 

  • коммит (commit, revision) - фиксация изменений в СУВ. 

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

  • магистраль (master, origin, mainline) - главное (уникальное) направление разработки.

Основная (эталонная) копия данных в центральном хранилище. Создаётся в начале работы и включает все те данные, которые надо обрабатывать в СУВ. Является единой точкой хранения и источником для большинства клонов.

  • версия - моментальный снимок некоего набора данных. 

Версия характеризуется символической меткой. Метка описывает состояние и состав данных на момент получения снимка.

  • ветвление - создание копии (клона) данных или части данных в целях отдельной разработки, проверки, эксплуатации.

Стратегия ветвления определяется стилем взаимодействия команды разработчиков.

  • ветка - копия данных, полученная в результате ветвления. Имеет идентификатор.

Работа в пределах ветки применяется для изоляции изменений от влияния других разработчиков и задач. 
В процессе разработки в ветку записываются изменения - коммиты. 

  • объединение ветвей - перенос изменений (коммитов) из одной ветки в другую.

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