Термин · Глоссарий B2B-ПО

Система параллельных версий (CVS) (Concurrent Versions System (CVS))

CVS (Concurrent Versions System) – система контроля версий с открытым исходным кодом, разработанная в 1986 году Диком Грюне. Одна из первых систем, поддерживающая параллельную работу нескольких разработчиков над общим репозиторием. Предшественник SVN и Git.

Буква «С» В категориях: 4 Платформ: 6+

Введение

CVS (Concurrent Versions System, Система параллельных версий) – одна из первых систем контроля версий (VCS) с централизованной архитектурой, позволяющей нескольким разработчикам одновременно работать над одним кодовым репозиторием. CVS была разработана Диком Грюне (Dick Grune) в 1986 году, первоначально как набор shell-скриптов поверх RCS (Revision Control System), и впоследствии превратилась в полноценный инструмент.

CVS революционизировала совместную разработку ПО, заменив пессимистическую блокировку файлов (RCS) на оптимистическую модель слияния изменений. В 1990-е годы CVS стала де-факто стандартом в open-source сообществе. Сегодня она вытеснена Git и SVN, но её концепции стали фундаментом для всех современных VCS.

История и контекст

История CVS началась в 1984 году: Дик Грюне создал инструмент для совместной работы со студентами над компилятором Amsterdam Compiler Kit (ACK). Публичный релиз состоялся в июне 1986 года. В апреле 1989 года Брайан Берлайнер (Brian Berliner) переписал CVS в полноценный инструмент с клиент-серверной архитектурой; именно эта версия легла в основу современного CVS. 19 ноября 1990 года CVS версии 1.0 была передана Фонду свободного программного обеспечения (FSF).

В 1990-е CVS стала стандартом open-source проектов (ядро Linux до 2002 года использовало BitKeeper, многие другие – CVS). В 2000 году CollabNet запустила разработку Subversion (SVN) с явной целью – создать «лучший CVS». SVN вытеснил CVS к середине 2000-х, а Git (созданный Линусом Торвальдсом в 2005 году) окончательно сменил парадигму, перейдя к распределённым VCS. Примечательно, что один из принципов разработки Git был сформулирован как WWCVSND – «What Would CVS Not Do» (что бы CVS не сделала).

Как это работает

Архитектура CVS основана на нескольких ключевых концепциях:

  • Централизованный репозиторий: все версии файлов хранятся на центральном сервере в формате RCS (.v-файлы). Клиенты подключаются к серверу для получения изменений (checkout) и их отправки (commit).
  • Оптимистичная модель параллелизма: несколько разработчиков могут редактировать один файл одновременно. При отправке CVS сначала требует, чтобы клиент обновился до последней версии, после чего выполняется слияние (merge) изменений.
  • Версионирование файлов: каждый файл версионируется независимо (версия 1.1, 1.2, 1.3...). Понятие «коммита как атомарной транзакции» в CVS отсутствует – это фундаментальный недостаток, исправленный в SVN.
  • Ветвление (branching) и теги: CVS поддерживает создание веток и тегов для маркировки релизов, хотя работа с ветками значительно сложнее, чем в Git.
  • Delta-компрессия: хранит только разницу между версиями, а не полные копии файлов, что экономит место на диске.

Где применяется

  • Унаследованные корпоративные системы: ряд крупных организаций до сих пор использует CVS в legacy-проектах, миграция которых откладывается.
  • Учебные цели: CVS изучается как исторический инструмент для понимания эволюции систем контроля версий.
  • Поддержка старого ПО: некоторые научные и государственные системы до сих пор хранят код в CVS-репозиториях.

Преимущества и ограничения

Исторические преимущества: первая массовая VCS с поддержкой параллельной работы, open-source, клиент-серверная архитектура, работа через сеть.

Ограничения (ставшие очевидными по мере развития VCS): отсутствие атомарных коммитов (коммит может быть частичным при сбое), версионирование файлов, а не проекта целиком, слабая поддержка переименования файлов, медленная работа с большими репозиториями, требует постоянного соединения с сервером.

Связь с другими понятиями

CVS является частью истории эволюции систем контроля версий (VCS): SCCS (1972) → RCS (1982) → CVS (1986) → SVN (2000) → Git (2005). Концепции CVS напрямую повлияли на проектирование Subversion как «исправленного CVS». Git создавался в том числе как противопоставление ограничениям CVS. Современным аналогом CVS является Git с распределённой архитектурой и атомарными коммитами. В корпоративной среде CVS-репозитории могут быть мигрированы в Git с помощью утилиты git-cvsimport.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «Система параллельных версий (CVS)».

Платформы класса «Система параллельных версий (CVS)»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

GI

GitFlic

ИТ-инфраструктура
GitFlic от компании ООО «РеСолют» (Группа Астра) — российский программный продукт из реестра отечественного ПО...
Цена по запросу
★ 4.8
Подробнее →
DC

Deckhouse Code

Разработка ПО
Deckhouse Code Enterprise EditionDeckhouse Code EEDC EEDeckhouse Code Standard EditionDeckhouse Code SEDC SE
Цена по запросу
Подробнее →
Онколинк

Онколинк

Разработка ПО
Платформа для управления онкологическими пациентами и координации медицинского обслуживания. Входит в Единый р...
Цена по запросу
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «Система параллельных версий (CVS)».

Где применяется

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

Частые вопросы про Система параллельных версий (CVS)

Кто и когда создал CVS?

CVS создал голландский учёный Дик Грюне (Dick Grune) в 1986 году. Изначально это были shell-скрипты для совместной работы над компилятором. В 1989 году Брайан Берлайнер переписал CVS в полноценный клиент-серверный инструмент.

Чем CVS лучше или хуже Git?

CVS – централизованная система с версионированием файлов и без атомарных коммитов. Git – распределённая с атомарными коммитами и мощным ветвлением. Git во всём превосходит CVS; CVS используется только в legacy-системах.

Что такое атомарный коммит и почему его нет в CVS?

Атомарный коммит – операция, при которой все изменения применяются целиком или не применяются вообще. В CVS файлы коммитятся по одному: сбой в середине оставит репозиторий в неконсистентном состоянии. SVN и Git исправили этот недостаток.

Используется ли CVS где-то сегодня?

Редко. Большинство проектов перешли на Git или SVN. Небольшое число legacy-корпоративных и научных репозиториев ещё использует CVS, но миграция на Git является стандартной практикой.

Почему Линус Торвальдс разработал Git с принципом WWCVSND?

Торвальдс использовал накопленные недостатки CVS как антипаттерны при проектировании Git. Принцип «что бы CVS не сделала» помогал выбирать правильные архитектурные решения для распределённой VCS.