Система контроля версий
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. Сравнение систем контроля версий
- На DVCS можно всё то же, что и на CVCS.
- На DVCS проще выполнять слияние ветвей.
- На DVCS вся история хранится локально. Можно работать офлайн и работа в целом быстрее.
- Более гибкая модель обмена изменениями.
- Разработчики привыкли к CVCS, нужно перестраиваться.
- У CVCS ниже «порог вхождения» - для работы с DVCS надо лучше понимать концепции контроля версий.
- В мире CVCS есть фаворит – SVN, в DVCS – git.
4. Базовый сценарий работы с системами контроля версий
- Получить локальную «рабочую копию» кода из репозитория.
- Внести изменения.
- В случае необходимости: выполнить слияние (merge) изменений с новыми правками в репозитории.
- Зафиксировать изменения в репозитории.
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.