Система параллельных версий
этой статьи Начальный раздел может быть слишком коротким, чтобы адекватно суммировать ключевые моменты . ( сентябрь 2018 г. ) |
Разработчик(и) | Команда CVS |
---|---|
Первоначальный выпуск | 19 ноября 1990 г |
Стабильная версия | 1.11.23 [1] / 8 мая 2008 г |
Предварительный выпуск | 1.12.13 [2] / 28 сентября 2005 г |
Репозиторий | |
Написано в | С |
Операционная система | Unix-подобный , Windows |
Тип | Контроль версий |
Лицензия | GPL-1.0 или новее [3] |
Веб-сайт | резюме |
Система параллельных версий ( CVS , или Concurrent Versioning System ) — это система контроля версий, первоначально разработанная Диком Грюном в июле 1986 года. [4]
CVS работает как интерфейс к системе контроля версий (RCS), более ранней системе, которая работала с отдельными файлами. Он расширяет RCS, добавляя поддержку отслеживания изменений на уровне репозитория и модель клиент-сервер. [5]
Выпущенная на условиях GNU General Public License , CVS является свободным программным обеспечением .
Дизайн [ править ]
CVS работает как интерфейс к системе контроля версий (RCS), более старой системе контроля версий, которая управляет отдельными файлами, но не целыми проектами. Он расширяет RCS, добавляя поддержку отслеживания изменений на уровне репозитория и модель клиент-сервер. [5] Файлы отслеживаются с использованием того же формата истории, что и в RCS, со скрытым каталогом, содержащим соответствующий файл истории для каждого файла в репозитории.
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 была передана в Фонд свободного программного обеспечения для разработки и распространения. [12]
Последняя версия была выпущена 8 мая 2008 года. [13]
и Принятие преемники
В мире программного обеспечения с открытым исходным кодом система параллельных версий (CVS) уже давно является предпочтительным инструментом для контроля версий. И это правильно. CVS сама по себе является свободным программным обеспечением, и ее неограниченный образ действий и поддержка сетевых операций, которые позволяют десяткам географически разбросанных программистов делиться своей работой, очень хорошо соответствуют совместной природе мира с открытым исходным кодом. CVS и его полухаотичная модель разработки стали краеугольным камнем открытого исходного кода. [14]
Со временем разработчики создали новые системы контроля версий на основе CVS, чтобы добавить функции, изменить операционную модель и повысить производительность разработчиков. Проекты замены CVS включают CVSNT и Subversion . [15] [16]
См. также [ править ]
Примечания [ править ]
- ^ Выпущена стабильная версия CVS 1.11.23!
- ^ Выпущена версия функции CVS 1.12.13! * Обновление безопасности *
- ^ «Содержимое /ccvs/README» .
- ^ «CVS — Система параллельных версий v1.12.12.1: Обзор» . Архивировано из оригинала 15 апреля 2012 года . Проверено 9 декабря 2011 года .
- ↑ Перейти обратно: Перейти обратно: а б Стопак, Якоб (30 ноября 2019 г.). «Эволюция внутреннего устройства системы контроля версий (VCS)» . Проверено 22 сентября 2020 г.
- ^ Чарльз Д. Крэнор; Тео де Раадт (1999). «Открытие репозитория исходного кода с помощью анонимного CVS, USENIX 1999» (PDF) . Архивировано (PDF) из оригинала 9 октября 2022 г.
- ^ Коллинз-Сассман, Бен; Грег Уорд (сентябрь 2004 г.). «Пользователи Subversion: Re: Производительность (Subversion и CVS)» . пользователи Subversion . Проверено 7 июля 2010 г.
- ^ Уэст, Адриан (июль 2004 г.). «Исправление производительности cvs Branchtag» . Архивировано из оригинала 3 августа 2009 г. Проверено 7 июля 2010 г.
- ^ «Система параллельных версий CVS» . dickgrune.com .
- ^ Дик Грюн (3 июля 1986 г.). «CVS, интерфейс RCS (cvs)» . Группа новостей : mod.sources . Usenet: [электронная почта защищена] . Проверено 14 сентября 2016 г.
- ^ «CVS II: Распараллеливание разработки программного обеспечения — Berliner (ResearchIndex)» . Архивировано из оригинала 9 сентября 2004 года.
- ^ «[cvs] Содержимое /ccvs/NEWS» . cvs.savannah.gnu.org .
- ^ «Система параллельных версий - Новости: Выпущена стабильная версия CVS 1.11.23! [Саванна]» . savannah.nongnu.org .
- ^ Бен Коллинз-Сассман, Контроль версий с помощью Subversion для Subversion 1.1, 2005 г.
- ^ «Часто задаваемые вопросы о Subversion: почему существует этот проект?» . Подрывная деятельность . Проверено 21 сентября 2009 г.
- ^ «Рассеивание подрывной деятельности» . Бен Коллинз-Сассман. Архивировано из оригинала 18 июля 2011 года . Проверено 30 июня 2010 г.
Ссылки [ править ]
- Дэвид Томас ; Эндрю Хант (2003). Прагматичный контроль версий с использованием CVS . Прагматичные программисты. ISBN 0-9745140-0-4 .
- Дженнифер Весперман (2006). Essential CVS (2-е изд.). О'Рейли. ISBN 0-596-52703-9 .
- Пер Седерквист; и др. (2002). Управление версиями с помощью CVS . Сетевая теория. ISBN 0-9541617-1-8 . Архивировано из оригинала 5 августа 2014 г. Проверено 25 ноября 2009 г.
- Карл Франц Фогель; Моше Бар (2003). Разработка с открытым исходным кодом с помощью CVS . Параглиф Пресс. ISBN 1-932111-81-6 . Архивировано из оригинала 16 июля 2014 г. Проверено 5 февраля 2002 г.
Внешние ссылки [ править ]
- Официальный сайт
- Управление версиями с помощью CVS : руководство для CVS 1.12.13, автор: Пер Седерквист и др.