CVS (Concurrent Versions System)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 11:11, 17 января 2019.
Concurrent Versions System
TortoiseCVS Logo.png
Разработчики: The CVS Team
Выпущена: 19 November 1990 года; 30 years ago (1990-11-19)
Постоянный выпуск: 1.11.23 / 8 May 2008 года; 12 years ago (2008-05-08)
Предыдущий выпуск: 1.12.13 / 26 July 2006 года; 14 years ago (2006-07-26)
Написана на: C
Операционная система: UNIX, Windows
Тип ПО: Revision control
Лицензия: GNU GPL
Веб-сайт savannah.nongnu.org/projects/cvs

CVS (англ. Concurrent Versions System - Система параллельных версий) представляет собой систему контроля версий клиент-серверного программного обеспечения. Система предназначена для проверки работы и измененений в наборе файлов. Она разработана Диком Груне в июне 1986 года. позволяет нескольким CVS имеет открытый исходный код. Позволяет работать сразу нескольким разработчикам. CVS выпущена в соответствии с GNU GPL. Сервер CVS хранит модули. Программисты получают копии модулей и проверяют их. Выбранные файлы служат рабочей копией или рабочей областью. Изменения в рабочей копии отражаются в репозитории с помощью их фиксации, чтобы приобрести или объединить изменения в хранилище с рабочей копией. [Источник 1]

Начиная с 2008 года система не обновлялась.

Особенности

CVS использует архитектуру клиент-сервер: сервер хранит текущую версию проекта и ее историю, а клиенты подключаются к серверу, чтобы «проверить» полную копию проекта, работать над этой копией, а затем позже «провереть» их изменения. Как правило, клиент и сервер подключаются через локальную сеть или через Интернет, но клиент и сервер могут работать на одном компьютере, если у CVS есть задача отслеживать историю версий проекта только с локальными разработчиками. Серверное программное обеспечение обычно работает в Unix (хотя, по крайней мере, сервер CVSNT также поддерживает различные варианты Microsoft Windows ), в то время как клиенты CVS могут работать на любом крупномплатформа операционной системы.

Хранилище и рабочая зона

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

Несколько разработчиков могут работать над одним и тем же проектом одновременно, каждый из которых редактирует файлы в своей собственной «рабочей копии» проекта и отправляет (или проверяет) их модификации на сервер. Чтобы избежать конфликтов, сервер принимает изменения, внесенные в самую последнюю версию файла. Поэтому ожидается, что разработчики будут обновлять свою рабочую копию на постоянной основе путем регулярного включения изменений других людей. Эта задача чаще всего обрабатывается клиентом CVS, требуя ручного вмешательства только тогда, когда возникает конфликт прав между изменением регистрации и все еще неконтролируемой локальной версией файла.

Если операция проверки завершается успешно, то номера версий всех задействованных файлов автоматически увеличиваются, а CVS-сервер записывает строку описания пользователя, дату и имя автора в свои файлы журналов. CVS также может запускать внешние, определенные пользователем сценарии обработки журнала после каждого фиксации. Эти скрипты устанавливаются в файле loginfo CVS, который может инициировать уведомление по электронной почте или преобразовывать данные журнала в веб-формат. Клиенты также могут сравнивать версии, запрашивать полную историю изменений или проверять исторический моментальный снимок проекта на определенную дату или номер версии, а также использовать команду «update», чтобы обновить свои локальные копии с помощью новейшей версии на сервере, что позволяет устранить необходимость повторной загрузки всего проекта.

Серверы CVS могут разрешать «анонимный доступ для чтения», где клиенты могут проверять и сравнивать версии с пустым или простым опубликованным паролем (например, «anoncvs»); только для регистрации изменений требуется личная учетная запись и пароль в этих сценариях.

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


« В мире программного обеспечения с открытым исходным кодом система параллельной версии (CVS) уже давно является инструментом выбора для контроля версий. И это правильно. CVS сам по себе является свободным программным обеспечением, а его неограничивающий modus operandi и поддержка сетевой работы, которые позволяют десяткам географически рассредоточенных программистов делиться своей работой, очень хорошо сочетаются с совместным характером мира с открытым исходным кодом. CVS и его полухаотическая модель развития стали краеугольными камнями open-source.
Коллинз-Суссман, контроль версий с Subversion для Subversion 1.1, 2005
»

История и статус

CVS является развитием более ранней системы управления версиями, имеющей название Revision Control System (RCS), которая всё ещё используется для работы с отдельными файлами, но не целыми проектами. Дик Грун привёл краткие исторические сведения о CVS на своей страничке. Вольный перевод части текста:

“CVS был создан для того, чтобы иметь возможность работы с двумя моими студентами над компилятором ACK (Amsterdam Compiler Kit). У нас троих был почти несовместимый по времени график (один студент имел постоянное место работы, второй появлялся нерегулярно, а я мог работать над проектом только по вечерам). Их проект длился с июля 1984 по август 1985. CVS изначально назывался cmt по причине того, что он позволил нам фиксировать версии независимо (от английского commit — фиксировать, совершать). Код впервые увидел свет в конференции mod.sources 23 июня 1986 года”.

Код, который в конце концов приобрёл вид текущей версии CVS, был начат совместно с Брайаном Берлинером в апреле 1989 года, с последующими дополнениями от Джеффа Полка и других участников. Брайан Берлинер написал документ, описывающий улучшения программы CVS, которые она успела приобрести за время внутреннего использования в Prisma — стороннем разработчике ядра SunOS, после чего Брайан выпустил её на всеобщее обозрение под лицензией GPL.

На сегодняшний день код CVS поддерживает группа добровольцев. Интересен тот факт, что версия CVS для Microsoft Windows, отделившаяся в отдельный проект CVSNT, сейчас достаточно активно расширяет возможности системы даже портируя изменения обратно на UNIX под именем CVSNT.

Отношение CVS к проекту GNU может трактоваться неоднозначно: на одной странице сайт GNU распространяет программу как «пакет GNU», а на другой CVS находится в разделе «другой проект под лицензией GPL». На FTP-сервере программа находится в директории /non-gnu/.

Дизайн

CVS был разработан:

  • чтобы исключить символические ссылки, потому что, когда они хранятся в системе управления версиями, они могут представлять угрозу безопасности. Например, символическая ссылка на чувствительный файл может быть сохранена в репозитории, что делает доступным конфиденциальный файл даже тогда, когда он не установлен. Вместо символических ссылок скрипты, которые требуют определенных привилегий и сознательного вмешательства для выполнения, могут быть проверены на CVS.
  • использовать собственный набор символов ASCII в именах файлов, исключая использование многоязычных имен файлов. Теперь многие системы Unix, работающие в UTF-8 , и CVS на таких системах обрабатывают многоязычные имена UTF-8 изначально.
  • создавать ревизии для каждого файла, а не идентификатор всех изменений, созданных во время фиксации (это иногда называют атомарным, но не в смысле транзакционной базы данных, где фиксация автоматически откатывается, если она по какой-либо причине отказывается, но в том смысле, что каждый фиксация может быть однозначно идентифицирована). Этот дизайн был сделан даже тогда, когда серверы могли легко иметь достаточную устойчивость для совершения коммита без сбоев. Отсутствие атомарности смягчается тем фактом, что во многих процессах управления кодом работы по разработке выполняются по ветвям, а затем объединяются в магистраль после проверки кода. Это окончательное слияние является атомарным и выполняется в центре обработки данных по QA. Отслеживание каждой фиксации может быть выполнено путем изменения правильного триггера.
  • предположить, что большая часть работы происходит на стволе и что ветви обычно должны быть кратковременными или историческими. При использовании по назначению ветви легко управляются, а операции филиалов эффективны и быстры.
  • текстовые файлы, как ожидается, были основным типом файла, хранящимся в репозитории CVS . Тем не менее двоичные файлы также поддерживаются, а файлы с определенным расширением могут автоматически распознаваться как двоичные.
  • изменения были часто переданными в централизованно проверенные копии файлов, чтобы помочь слиянию и ускорить распределение изменений для всех пользователей, поэтому нет поддержки для распределенного контроля версий или неопубликованных изменений[Источник 2].

Последователи

Улучшенной версией после CVS является SVN, данная версия системы централизованного управления версиями с открытым исходным кодом была быстрее чем CVS, так как SVN позволяла сохранять нетекстовые файлы как рисунки, тогда как CVS не могла этого делать. Также последователями CVS можно назвать CVSNT, Apache Subversion и EVS.

Источники

  1. Система одновременных версий (CVS) // WhatIs.com. [1999—2018]. Дата обновления: 01.03.2011. URL: https://whatis.techtarget.com/definition/Concurrent-Versions-System-CVS (дата обращения: 31.05.2018).
  2. Concurrent Versions System - Меню // Саванна. [2002—2018]. Дата обновления: 04.08.2018. URL: http://savannah.nongnu.org/projects/cvs (дата обращения: 31.05.2018).