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

Система управления версиями (также используется определение «система контроля версий», от англ. Version Control System, VCS) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.

Система контроля редакций (от англ. Revision Control System, RCS) — локальная система контроля версий. Сохраняет на диске в специальном формате набор всех внесённых изменений.

Централизованная система контроля версий (от англ. Centralized Version Control System, CVCS) — это система контроля версий использующая единственный сервер, который содержит все версии файлов. Клиенты, обращаясь к этому серверу, получают из этого централизованного хранилища. Применение централизованных систем контроля версий на протяжении многих лет являлась стандартом. К ним относятся CVS, Subversion, Perforce.

Распределённая система контроля версий (от англ. Distributed Version Control System, DVCS) — эта система контроля версий подразумевают, что клиент выкачает себе весь репозиторий целиком заместо выкачки конкретных интересующих клиента файлов. Если умрет любая копия репозитория, то это не приведет к потере кодовой базы, поскольку она может быть восстановлена с компьютера любого разработчика. Каждая копия является полным бэкапом данных.

CVS (англ. Concurrent Versions System — система одновременных версий) — централизованная система управления версиями, популярная в 1990-е — начале 2000-х годов. Хранит историю изменений определённого набора файлов, как правило, исходного кода программного обеспечения, и облегчает совместную работу группы людей над одним проектом.

Subversion (также известная как «SVN») — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet. С 2010 года Subversion является одним из проектов Apache Software Foundation и официально называется Apache Subversion.

Perforce (сокр. P4) — коммерческая система управления версиями. Доступна бесплатная лицензия для пяти пользователей. Разработана компанией Perforce Software, основанной в 1995 году. Система имеет клиент-серверную архитектуру. Сервер Perforce может одновременно иметь несколько репозиториев, называемые «депо» (англ. depot).

Mercurial (с англ. — «ртутный, подвижный»), он же Hg (от обозначения химического элемента ртути) — кроссплатформенная распределённая система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода. В первую очередь она является консольной программой.

Bazaar (ранее известная как Bazaar-NG, имя утилиты командной строки bzr) — распределённая система управления версиями, разработка которой спонсируется фирмой Canonical. Система Bazaar разработана с целью облегчить работу над развитием свободных и открытых проектов для всех желающих.

Darcs — распределённая система управления версиями с широкими возможностями, может быть использована для замены CVS.

BitKeeper is a software tool for distributed revision control of computer source code. Originally developed as proprietary software by BitMover Inc., a privately held company based in Los Gatos, California, it was released as open-source software under the Apache-2.0 license on 9 May 2016. BitKeeper is no longer being developed.

Git

Git (произносится «гит»]) — распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. На сегодняшний день его поддерживает Джунио Хамано.

Три состояния файлов в Git:

  • Изменён, Модифицирован (modified) — изменения уже внесены в файл, но пока не зафиксированы.
  • Индексирован (staged) — помеченная текущая версия модифицированного файла как предназначенная для следующей фиксации.
  • Зафиксирован (committed) — данные надёжно сохранены в локальной базе.

Папка Git — это место, где Git хранит метаданные и объектную базу данных проекта.

Рабочая папка — это место, куда выполняется выгрузка одной из версий проекта.

Область индексирования (Промежуточная область) — это файл, обычно находящийся в папке Git и хранящий информацию о том, что именно войдёт в следующую операцию фиксации.

Ветвление и скрытие — операции, которые позволяют сохранить внесённые в файл изменения, но временно убрать его с глаз.

Легковесный тег (lightweight tag) — это что-то похожее на ветку, которая не изменяется — это просто указатель на конкретный коммит.

Теги с комментариями (аннотированные теги, annotated tags) — это теги, которые хранятся в базе данных Git как полноценные объекты. Они имеют контрольную сумму, содержат имя автора, его e-mail и дату создания, имеют комментарий и могут быть подписаны и проверены с помощью GNU Privacy Guard (GPG).