Система параллельных версий


Concurrent Versions System ( CVS , также известная как Concurrent Versioning System ) — система управления версиями, первоначально разработанная Диком Грюном в июле 1986 года. [2]

CVS работает как внешний интерфейс для RCS , более ранней системы, которая работала с отдельными файлами. Он расширяет RCS, добавляя поддержку отслеживания изменений на уровне репозитория и модель клиент-сервер. [3]

CVS работает как интерфейс к системе контроля версий (RCS), более старой системе контроля версий, которая управляет отдельными файлами, но не целыми проектами. Он расширяет RCS, добавляя поддержку отслеживания изменений на уровне репозитория и модель клиент-сервер. [3] Файлы отслеживаются с использованием того же формата истории, что и в RCS, со скрытым каталогом , содержащим соответствующий файл истории для каждого файла в репозитории.

CVS использует дельта-сжатие для эффективного хранения разных версий одного и того же файла. Это хорошо работает с большими текстовыми файлами с небольшими изменениями от одной версии к другой. Обычно это относится к файлам исходного кода. С другой стороны, когда CVS предписывается хранить файл как двоичный, он будет хранить каждую отдельную версию на сервере. Обычно это используется для нетекстовых файлов, таких как исполняемые образы, где трудно создать компактные дельты между версиями.

CVS исключает символические ссылки , потому что, когда они хранятся в системе контроля версий, они могут представлять угрозу безопасности. Например, символическая ссылка на конфиденциальный файл может храниться в репозитории, что делает конфиденциальный файл доступным, даже если он не зарегистрирован. Вместо символических ссылок в хранилище могут быть зарегистрированы сценарии, для выполнения которых требуются определенные привилегии и сознательное вмешательство. CVS. [ нужна ссылка ]

CVS помечает отдельный проект (набор связанных файлов), которым он управляет, как модуль . Сервер CVS хранит модули, которыми он управляет, в своем репозитории . Программисты получают копии модулей, извлекая файлы . Извлеченные файлы служат рабочей копией , песочницей или рабочей областью . Изменения рабочей копии отражаются в репозитории путем их фиксации . Обновить означает получить или объединить изменения в репозитории с рабочей копией.