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

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

В СКВ для кода процесс создания ревизии называется фиксацией (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. Система управления версиями
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →