Система контроля версий

Author: Tatyana Milkina

1. VCS - что это?

На любом проекте над одним кодом работает обычно несколько разработчиков. Возникает проблема с обменом кода - кто и когда внес какие изменения, можно ли их отменить, а можно ли хранить несколько версий одного и того же файла? Все эти проблемы позволяют решать системы контроля версий (VCS = Version Control System).

2. Виды систем контроля версий 

Системы контроля версий бывают централизованные (CVCS) и распределённые (DVCS).

CVCS - это более старый вид контроля версий. Они использовались ещё в семидесятые года. Единое хранилище версий – это центральный репозиторий. Разработчик работает с локальной копией и отправляет изменения в центральный репозиторий. Репозиторий виден всем (у кого есть доступ), и обмен кодом – только через него.

Примеры: SVN, Perforce, MS TFS, ClearCase.

DVCS - это «новое течение», первые системы появились в девяностые, начало 2000-х, но массовое распространение получили с 2005 года. Каждый разработчик владеет копией репозитория, фактически, своим локальным «сервером» контроля версий. Копии легко создавать: проще экспериментировать с кодом. Передавать изменения можно между любой парой репозиториев. В распределенных Version Control System нет «главного» репозитория.

Примеры: git, Mercurial, Bazaar.

3. Сравнение систем контроля версий

  1. На DVCS можно всё то же, что и на CVCS.
  2. На DVCS проще выполнять слияние ветвей.
  3. На DVCS вся история хранится локально. Можно работать офлайн и работа в целом быстрее.
  4. Более гибкая модель обмена изменениями.
  5. Разработчики привыкли к CVCS, нужно перестраиваться.
  6. У CVCS ниже «порог вхождения» - для работы с DVCS надо лучше понимать концепции контроля версий.
  7. В мире CVCS есть фаворит – SVN, в DVCS – git.

4. Базовый сценарий работы с системами контроля версий

  1. Получить локальную «рабочую копию» кода из репозитория.
  2. Внести изменения.
  3. В случае необходимости: выполнить слияние (merge) изменений с новыми правками в репозитории.
  4. Зафиксировать изменения в репозитории.
Читайте также:
Комментарии