CVS
Материал из Википедии — свободной энциклопедии
CVS | |
Тип | Система контроля версий |
Разработчик | The CVS Team |
ОС | FreeBSD, GNU/Linux, Mac OS X, Microsoft Windows |
Текущая версия | 1.11.23 — 8 мая 2008 |
Лицензия | GNU GPL |
Сайт | nongnu.org/cvs |
CVS (Concurrent Versions System) — программный продукт, относящийся к разряду систем управления версиями (англ. version control system). Хранит историю изменений определённого набора файлов, как правило исходного кода программного обеспечения, и облегчает совместную работу группы людей (часто — программистов) над одним проектом. CVS популярна в мире открытого ПО. Система распространяется на условиях лицензии GNU GPL.
В настоящее время CVS является устаревшей системой, поскольку доступны более функциональные современные альтернативы (например, Subversion).
Содержание |
[править] Особенности
CVS использует архитектуру клиент-сервер. Обычно клиент и сервер соединяются через локальную сеть или через Интернет, но могут работать и на одной машине, если необходимо вести историю версий локального проекта. Серверное ПО обычно работает под управлением Unix (хотя существует CVS сервер и для Windows NT), тогда как CVS клиенты доступны во всех популярных операционных системах.
Сервер хранит в специальном хранилище (репозитории) текущую версию (версии) проекта и историю изменений, а клиент соединяется с ним, чтобы получить нужную ему версию или записать новую. Получив с сервера нужную версию (данная процедура называется check-out), клиент создаёт локальную копию проекта (или его части) — так называемую рабочую копию. После того как в файлы, находящиеся в рабочей копии, внесены необходимые изменения, они пересылаются на сервер (check-in).
Несколько клиентов могут работать над копиями проекта одновременно. Когда они отправляют результаты, сервер пытается слить их изменения в репозитории вместе. Если это не удаётся, например, в случае, когда два клиента изменили одни и те же строки в определённом файле, сервер не примет изменения от последней check-in операции и сообщит клиенту о конфликте, который должен быть исправлен вручную. Если check-in операция завершилась успешно, то номера версий всех затронутых файлов автоматически увеличиваются, и сервер записывает комментарий, дату и имя пользователя в свой журнал (data logging).
Клиенты также могут сравнить различные версии файлов, запросить полную историю изменений или получить исторический образ проекта на определённое число или по номеру ревизии. Многие Open Source проекты разрешают анонимный доступ на чтение, который впервые был применён OpenBSD. Это означает, что клиенты могут запрашивать и сравнивать версии файлов без пароля; только check-in операции ведущие к изменению данных в репозитории требуют пароль.
Также для синхронизации локальной копии проекта с информацией на сервере клиенты могут использовать команду update, что позволяет избежать повторного скачивания всего проекта.
CVS также может содержать различные ветки проекта. Например, стабильная версия проекта может составлять одну ветвь (branch), в которую вносятся только исправления ошибок, тогда как активная разработка может вестись в параллельной ветке, которая включает значительные улучшения или изменения с момента выхода стабильной версии.
CVS использует механизм дельта-компрессии для эффективного хранения различных версий одного и того же файла.
[править] Терминология
Проекты в CVS хранятся в виде модулей. Модуль — это набор файлов проекта. Сервер CVS может обслуживать несколько модулей; все модули хранятся в репозито́рии. Локальная копия модуля, полученная с помощью CVS клиента, называется рабочей копией.
- Check-out
- извлечение целого модуля из CVS и создание рабочей копии.
- Check-in
- регистрация изменений проекта в CVS.
- Update
- обновление локального проекта из CVS.
- Branch
- «ветка» — независимое направление модификации проекта, которое может содержать ряд последовательных версий. «Ветка» может развиваться параллельно другим веткам. Главная ветка есть всегда.
- Main trunk или HEAD
- главная ветка.
- Revision
- «ревизия»: одна из версий отдельного файла.
- Release
- «релиз»: одна из версий целого проекта. Термин «версия» вообще не используется.
- Tag («тег»)
- специальная метка, обозначающая определённый релиз продукта. Текст метки желательно делать максимально понятным. Метку можно назначить и отдельному файлу, но особого смысла в этом нет. Тег помечает совокупность файлов определённых ревизий (версий).
[править] История и статус
CVS является развитием более ранней системы управления версиями, имеющей название Revision Control System (RCS), которая всё ещё используется для работы с отдельными файлами, но не целыми проектами. Дик Грун (Dick Grune) привёл краткие исторические сведения о CVS на своей страничке. Вольный перевод части текста:
CVS был создан для того, чтобы иметь возможность работы с двумя моими студентами над C компилятором ACK (Amsterdam Compiler Kit). У нас троих был почти несовместимый по времени график (один студент имел постоянное место работы, второй появлялся нерегулярно, а я мог работать над проектом только по вечерам). Их проект длился с июля 1984 по август 1985. CVS изначально назывался cmt, по причине того, что он позволил нам фиксировать версии независимо (от английского commit — фиксировать, совершать).
Код впервые увидел свет в конференции mod.sources в июне 23, 1986.
Код, который в конце концов приобрёл вид текущей версии CVS, был начат совместно с Brian Berliner в апреле 1989, с последующими дополнениями от Jeff Polk и других участников. Brian Berliner написал документ, описывающий улучшения программы CVS, которые она успела приобрести за время внутреннего использования в Prisma — стороннем разработчике ядра SunOS, после чего Brian выпустил её на всеобщее обозрение под GPL.
На сегодняшний день код CVS содержит группа добровольцев. Интересен тот факт, что версия CVS для Microsoft Windows, отделившаяся в отдельный проект CVSNT, сейчас достаточно активно расширяет возможности системы даже портируя изменения обратно на UNIX под именем CVSNT.
Отношение CVS к проекту GNU может трактоваться неоднозначно: на одной странице сайт GNU распространяет программу как «пакет GNU», а на другой CVS находится в разделе «другой проект под лицензией GPL». На FTP сервере программа находится в директории /non-gnu/.
[править] Инструменты
[править] Веб-интерфейсы для просмотра репозитория
[править] Клиенты, графические оболочки для работы с CVS
[править] Свободные/Open Source
- Кроссплатформенные
- CVSGUI — набор CVS клиентов для Windows, MacOS, GNU/Linux (WinCvs, MacCvs и gCvs, соответственно)
- LinCVS — многоплатформенная (GNU/Linux, другие Unix-like, Windows, Mac OS X) оболочка, написанная с использованием библиотеки Qt
- Eclipse — кроссплатформенный IDE со встроенной поддержкой CVS
- TkCVS — многоплатформенная (GNU/Linux, другие Unix-like, Windows, MacOS X) графическая оболочка, написанная на интерпретируемом языке Tcl
- NetBeans IDE — кроссплатформенный IDE со встроенной поддержкой CVS
- Microsoft Windows
- TortoiseCVS — вероятно самый простой CVS клиент для Windows
- WinCVS
- DevC++ — очень популярная IDE c CVS клиентом
[править] Коммерческие
[править] Сервер CVS
[править] Прочие инструменты
- meld — инструмент для работы с изменениями
- StatCvs — статистика
- BuildBot — помогает в управлении проектом; строит и тестирует дерево при поступлении на CVS новых изменений
- boneclipse-cvsgrapher — плагин для Eclipse
[править] См. также
- Система управления версиями
- Revision Control System — система-предшественник CVS;
- SCM — Software Configuration Management;
- Subversion (SVN).
- git
[править] Ссылки
- Документация по CVS
- Краткое введение в CVS (на русском языке). Включает тесты на знание CVS.
- Джим Блэнди. Введение в CVS