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

Историческая централизованная система контроля версий
Система параллельных версий
Разработчик(и)Команда CVS
Первоначальный выпуск19 ноября 1990 г .; 34 года назад ( 1990-11-19 )
Стабильный релиз
1.11.23 [1] / 8 мая 2008 г. ; 16 лет назад ( 2008-05-08 )
Предварительный релиз
1.12.13 [2] / 28 сентября 2005 г. ; 19 лет назад ( 2005-09-28 )
Репозиторий
  • savannah.nongnu.org/projects/cvs
Написано вС
Операционная системаUnix-подобный , Windows
ТипКонтроль версий
ЛицензияGPL-1.0 или более поздняя версия [3]
Веб-сайтcvs.nongnu.org

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

Дизайн

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

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

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

Операция

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

CVS использует архитектуру клиент-сервер : сервер хранит текущую версию(и) проекта и его историю, а клиенты подключаются к серверу, чтобы «извлечь» полную копию проекта, работать над этой копией, а затем позже «зарегистрировать» свои изменения. Серверы CVS могут разрешать «анонимный доступ на чтение», [6] при котором клиенты могут извлекать и сравнивать версии с пустым или простым опубликованным паролем (например, «anoncvs»); только регистрация изменений требует личной учетной записи и пароля в этих сценариях. Несколько разработчиков могут работать над одним и тем же проектом одновременно, каждый из них редактирует файлы в своей собственной «рабочей копии» проекта и отправляет (или регистрирует ) свои изменения на сервер. Чтобы избежать конфликтов, сервер принимает только изменения, внесенные в самую последнюю версию файла. Поэтому от разработчиков ожидается, что они будут поддерживать свою рабочую копию в актуальном состоянии, регулярно внося изменения других людей. Эта задача в основном выполняется автоматически клиентом CVS, требуя ручного вмешательства только в случае возникновения конфликта редактирования между зарегистрированной модификацией и еще не зарегистрированной локальной версией файла. Клиенты также могут использовать команду «обновить», чтобы обновить свои локальные копии до последней версии на сервере. Клиенты также могут сравнивать версии, запрашивать полную историю изменений или извлекать исторический снимок проекта (например, на основе заданной даты). Если операция регистрации прошла успешно, то номера версий всех задействованных файлов автоматически увеличиваются, и сервер записывает предоставленную пользователем строку описания, дату и имя автора в свои файлы журнала . CVS также может запускать внешние, указанные пользователем сценарии обработки журнала после каждого коммита. Эти сценарии устанавливаются записью в файле CVS loginfo, которая может инициировать уведомление по электронной почте или преобразовывать данные журнала в веб-формат.

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

Портативность

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

История

Грюн вспоминал: [9]

Я создал CVS, чтобы иметь возможность сотрудничать со своими студентами, Эриком Баалбергеном и Маартеном Вааге, над компилятором C ACK ( Amsterdam Compiler Kit ). У нас троих были совершенно разные графики (один студент был постоянным работником с 9 до 5, другой был нерегулярным, и я мог работать над проектом только по вечерам). Их проект продолжался с июля 1984 года по август 1985 года. CVS изначально назывался cmt, по очевидной причине, что он позволял нам фиксировать версии независимо.

Грюн публично опубликовал код 23 июня 1986 года. [10]

Код, который в конечном итоге развился в текущую версию CVS, был создан Брайаном Берлинером в апреле 1989 года, а позднее в него внесли свой вклад Джефф Полк и многие другие участники. Брайан Берлинер написал статью, в которой представил свои усовершенствования программы CVS, в которой описывается, как инструмент был расширен и использовался внутри Prisma, сторонним разработчиком, работающим над ядром SunOS, и был выпущен для сообщества под лицензией GPL. [11] 19 ноября 1990 года версия CVS 1.0 была отправлена ​​в Free Software Foundation для разработки и распространения. [12]

Последняя версия была выпущена 8 мая 2008 года. [13]

Усыновление и наследники

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

Со временем разработчики создали новые системы контроля версий на основе CVS, чтобы добавить функции, изменить операционную модель и повысить производительность разработчиков. Проекты замены CVS включают CVSNT и Subversion . [15] [16]

Смотрите также

Примечания

  1. ^ Выпущена стабильная версия CVS 1.11.23!
  2. ^ Выпущена версия функции CVS 1.12.13! * Обновление безопасности *
  3. ^ "Содержимое /ccvs/README".
  4. ^ "CVS--Concurrent Versions System v1.12.12.1: Overview". Архивировано из оригинала 15 апреля 2012 г. Получено 9 декабря 2011 г.
  5. ^ Стопак, Якоб (30 ноября 2019 г.). "Эволюция внутренних компонентов системы контроля версий (VCS)" . Получено 22 сентября 2020 г.
  6. ^ Чарльз Д. Крейнор; Тео де Раадт (1999). «Открытие исходного репозитория с помощью анонимного CVS, USENIX 1999» (PDF) . Архивировано (PDF) из оригинала 2022-10-09.
  7. ^ Коллинз-Сасман, Бен; Грег Уорд (сентябрь 2004 г.). "Пользователи Subversion: Re: Производительность (Subversion против CVS)". subversion-users . Получено 2010-07-07 .
  8. ^ Уэст, Адриан (июль 2004 г.). "cvs branchtag performance fix". Архивировано из оригинала 2009-08-03 . Получено 2010-07-07 .
  9. ^ "Система параллельных версий CVS". dickgrune.com .
  10. Дик Грюн (3 июля 1986 г.). "CVS, интерфейс RCS (cvs)". Группа новостей : mod.sources. Usenet:  122@mirror.UUCP . Получено 14 сентября 2016 г.
  11. ^ "CVS II: Parallelizing Software Development - Berliner (ResearchIndex)". Архивировано из оригинала 9 сентября 2004 г.
  12. ^ "[cvs] Содержимое /ccvs/NEWS". cvs.savannah.gnu.org .
  13. ^ "Система параллельных версий - Новости: Выпущена стабильная версия CVS 1.11.23! [Savannah]". savannah.nongnu.org .
  14. ^ Бен Коллинз-Сассман, Управление версиями с помощью Subversion для Subversion 1.1, 2005 г.
  15. ^ "Subversion FAQ: Почему этот проект существует?". Subversion . Получено 21 сентября 2009 г.
  16. ^ "Dispelling Subversion FUD". Бен Коллинз-Сассман. Архивировано из оригинала 18 июля 2011 г. Получено 30 июня 2010 г.

Ссылки

  • Дэвид Томас ; Эндрю Хант (2003). Прагматичный контроль версий с использованием CVS . Прагматичные программисты. ISBN 0-9745140-0-4.
  • Дженнифер Весперман (2006). Essential CVS (2-е изд.). O'Reilly. ISBN 0-596-52703-9.
  • Пер Седерквист; и др. (2002). Управление версиями с помощью CVS. Сетевая теория. ISBN 0-9541617-1-8. Архивировано из оригинала 2014-08-05 . Получено 2009-11-25 .
  • Карл Франц Фогель; Моше Бар (2003). Разработка ПО с открытым исходным кодом с использованием CVS. Paraglyph Press. ISBN 1-932111-81-6. Архивировано из оригинала 2014-07-16 . Получено 2002-02-05 .
  • Официальный сайт
Получено с "https://en.wikipedia.org/w/index.php?title=Concurrent_Versions_System&oldid=1268120429"