История развития СКВ

История развития СКВ#

Одна из ранних Систем Контроля Версий (далее СКВ) появилась в 1982 году и называется RCS. Она поддерживается до сих пор в рамках проекта GNU и доступна в Linux-дистрибутивах. Достаточно набрать команду rcs --commands чтобы получить список поддерживаемых команд с их краткими описаниями.

skt@home:~$ rcs --commands
(command)   (description)
 ci          Check in revisions of RCS files from working files.
 co          Check out working files from revisions of RCS files.
 frob        Change RCS file attributes.
 clean       Clean up working files.
 diff        Compare RCS revisions.
 merge       Merge RCS revisions.
 log         Print log messages and other information about RCS files.

RCS называют локальной, что значит она предназначена для частного применения, так как работает на одной машине и не обладает инструментами командной работы над файлами.

Развитием локальных систем стали централизованные, построенные по клиент-серверной архитектуре. Хранилище вместе с историей изменений располагаются на удаленном сервере, а клиенты загружают по сети исходные коды. Такие системы позволили команде совместно работать над проектом. Те действия, для которых необходим доступ к истории, выполняются только на стороне сервера. Централизованный подход к содержанию хранилища позволяет контролировать доступ клиентов к частям хранилища, временно блокировать изменения файлов пока другой клиент не обновит их. Недостатки централизованных систем:

  • привязывают рабочее место к серверу;

  • сетевые накладные расходы при выполнении команд;

  • риск потерять хранилище.

Примеры таких систем – это CVS и Subversion.

../_images/cvs-subversion-logo.png

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

Примеры таких систем – это Git и Mercurial.

../_images/git-mercurial-logo.png