Во всех предыдущих примерах мы рассматривали СКВ, встроенные прямо в программы, в частности, в текстовые редакторы. А СКВ для исходного кода отделены от используемых средств разработки (хотя могут быть дополнительно интегрированы с ними).

Это связано с тем что, исходный код, по сути, является набором текстовых (и бинарных) файлов. Кто, как и где будет их редактировать заранее знать невозможно. Кроме того, автоматическое создание ревизий становится крайне неудобным.

В СКВ для кода процесс создания ревизии называется коммит (commit). На работе вы будете часто слышать фразу "закоммитишь?" или "я закоммитил". Более того, обычно, вместо слова "ревизия" употребляют слово "коммит". И мы тоже так будем делать.

При работе с кодом важно, чтобы изменения в рамках одного коммита подчинялись определенным правилам. Только в таком случае можно будет воспользоваться всеми преимуществами СКВ. К таким требованиям относятся:

  • Именование. Коммиты должны иметь осмысленное описание. Например: "fix scrolling".
  • Атомарность. Коммит должен решать одну задачу и желательно от начала до конца. Это позволит построить такую историю проекта, которую легко читать и понимать. А в случае необходимости можно легко откатить изменение или перенести его в другую версию программы.

Кроме этих базовых, существует и множество других рекомендаций входящих в понятие "хороший коммит".

Какие бы вы не использовали СКВ, базовый рабочий процесс один. Выглядит он так:

  1. Инициализация (создание) репозитория
  2. Добавление новых файлов
  3. Коммит
  4. Любые операции с файлами (добавление, удаление или изменение)
  5. Коммит
  6. ...

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

СКВ принято делить на поколения, каждое из которых сильно изменяло подходы к работе.

Первое поколение

RCS, SCCS

  • Работали с каждым файлом индивидуально
  • Только локальная работа

Local File Version Control

Второе поколение

CVS, SourceSafe, Subversion

  • Многофайловые
  • Централизованные
  • Требуют наличия сервера

Работать в этих системах без доступа к серверу нельзя. Вы не сможете буквально ничего. Посмотреть историю, сделать коммит, откатиться на другую версию, все это становится невозможно оффлайн.

Central File Version Control

Третье поколение

Git, Bazaar, Mercurial

  • Распределенные
  • У каждого свой полноценный репозиторий

Distributed File Version Control


Дополнительные материалы

  1. Система управления версиями