CVS


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

С конца 2000-х годов активная разработка системы прекращена (последняя версия выпущена в мае 2008 года), в исходный код вносятся только небольшие исправления[6]. Считается устаревшей[7][8][9] системой.

CVS использует архитектуру клиент-сервер. Обычно клиент и сервер соединяются через локальную сеть или через Интернет, но могут работать и на одной машине, если необходимо вести историю версий локального проекта. Серверное ПО обычно работает под управлением Unix (хотя существует CVS-сервер и для Windows NT), тогда как CVS-клиенты доступны во всех популярных операционных системах.

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

Несколько клиентов могут работать над копиями проекта одновременно. Когда они отправляют результаты, сервер пытается объединить вместе их изменения в хранилище. Если это не удаётся, например, в случае, когда два клиента изменили одни и те же строки в определённом файле, сервер не примет изменения от последней операции check-in, и сообщит клиенту о конфликте, который должен быть исправлен вручную. Если операция check-in завершилась успешно, то номера версий всех затронутых файлов автоматически увеличиваются, и сервер записывает комментарий, дату и имя пользователя в свой журнал.

Клиенты также могут сравнить различные версии файлов, запросить полную историю изменений или получить исторический образ проекта на определённое число или по номеру версии. Многие открытые проекты разрешают анонимный доступ на чтение, который впервые был применён в OpenBSD. Это означает, что клиенты могут запрашивать и сравнивать версии файлов без пароля; только check-in-операции, ведущие к изменению данных в хранилище, требуют пароль.