CVS
CVS | |
---|---|
Тип | Централизованнаясистема управления версиями |
Разработчик | The CVS Team |
Написана на | C[1] |
Операционные системы | FreeBSD,Linux,Mac OS X,Microsoft Windows |
Первый выпуск | 19 ноября1990[2] |
Последняя версия | 1.11.23 (8 мая2008) |
Бета-версия |
|
Репозиторий | savannah.nongnu.org/proj… |
Лицензия | GNU GPL |
Сайт | nongnu.org/cvs |
CVS(Concurrent Versions System,«Система Одновременных Версий») — программный продукт, относящийся к разрядусистем управления версиями(англ.version control system). Хранит историю изменений определённого набора файлов, как правило,исходного кодапрограммного обеспечения,и облегчает совместную работу группы людей (часто —программистов) над одним проектом. CVS популярна в миреоткрытого ПО.Система распространяется на условияхлицензииGNU GPL.
В настоящее время активная разработка системы прекращена (последняя версия выпущена в мае2008 года), в исходный код вносятся только небольшие исправления[4].
Некоторые источники считают CVSустаревшей[5][6][7]системой, потому что CVS имеет ряд недостатков, и имеются более молодые альтернативные системы управления версиями (например,SubversionилиGit), свободные от большинства недостатков CVS.
Основные концепции
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
- фиксация локальных изменений в репозиторий.
- Update
- обновление локального проекта из CVS.
- Branch
- «ветка» — независимое направление модификации проекта, которое может содержать ряд последовательных версий. «Ветка» может развиваться параллельно другим веткам. Главная ветка есть всегда.
- Main trunk или HEAD
- главная ветка.
- Revision
- «ревизия»: одна из версий отдельного файла.
- Release
- «релиз»: одна из версий целого проекта. Термин «версия» вообще не используется.
- Tag («тег»)
- специальная метка, обозначающая определённый релиз продукта. Текст метки желательно делать максимально понятным. Метку можно назначить и отдельному файлу, но особого смысла в этом нет. Тег помечает совокупность файлов определённых ревизий (версий).
История и статус
CVS является развитием более раннейсистемы управления версиями,имеющей названиеRevision Control System(RCS), которая всё ещё используется для работы с отдельными файлами, но не целыми проектами. Дик Грун привёл[8]краткие исторические сведения о CVS на своей страничке. Вольный перевод части текста:
CVS был создан для того, чтобы иметь возможность работы с двумя моими студентами надCкомпилятором ACK (Amsterdam Compiler Kit). У нас троих был почти несовместимый по времени график (один студент имел постоянное место работы, второй появлялся нерегулярно, а я мог работать над проектом только по вечерам). Их проект длился с июля1984по август1985.CVS изначально называлсяcmt,по причине того, что он позволил нам фиксировать версии независимо (от английскогоcommit— фиксировать, совершать).
Код впервые увидел свет в конференции mod.sources виюне 23,1986.
Код, который в конце концов приобрёл вид текущей версии CVS, был начат совместно с Брайаном Берлинером в апреле 1989 года, с последующими дополнениями от Джеффа Полка и других участников. Брайан Берлинер написал[9]документ, описывающий улучшения программы CVS, которые она успела приобрести за время внутреннего использования вPrisma— стороннем разработчике ядраSunOS,после чего Брайан выпустил её на всеобщее обозрение под лицензиейGPL.
На сегодняшний день код CVS поддерживает группа добровольцев. Интересен тот факт, что версия CVS дляMicrosoft Windows,отделившаяся в отдельный проектCVSNT,сейчас достаточно активно расширяет возможности системы дажепортируяизменения обратно наUNIXпод именем CVSNT.
Отношение CVS к проекту GNU может трактоваться неоднозначно: на одной странице сайт GNU распространяет программу как «пакет GNU», а на другой CVS находится в разделе «другой проект под лицензией GPL». На FTP-сервере программа находится в директории/non-gnu/.
Недостатки
- Невозможно переименовать файл или директорию так, чтобы это изменение было отражено в истории.
- Ограниченная поддержкаюникодаи не-ASCIIимен.
- Публикации изменений не атомарны.
- Наборы изменений не поддерживаются.
- Неэффективное хранение бинарных файлов.
- Оригинальный GNU CVS не поддерживает разграничения прав между пользователями репозитория
Инструменты
Веб-интерфейсы для просмотра репозитория
Клиенты, графические оболочки для работы с CVS
Свободные / Open source
- Кроссплатформенные
- CVSGUI— набор CVS клиентов для Windows, MacOS, Linux (WinCvs, MacCvs и gCvs, соответственно)
- LinCVS— многоплатформенная (Linux, другие Unix-like, Windows, Mac OS X) оболочка, написанная с использованием библиотекиQt
- Eclipse— кроссплатформенный IDE со встроенной поддержкой CVS
- TkCVS— многоплатформенная (Linux, другие Unix-like, Windows, MacOS X) графическая оболочка, написанная наинтерпретируемомязыкеTcl
- NetBeans IDE— кроссплатформенный IDE со встроенной поддержкой CVS
- Microsoft Windows
- TortoiseCVS— вероятно самый простой CVS клиент для Windows
- WinCVS
- DevC++— очень популярная IDE c CVS клиентом
- Solaris/OpenSolaris
- Sun StudioIDE
Коммерческие
Сервер CVS
Прочие инструменты
- meld— инструмент для работы с изменениями
- StatCvs— статистика
- BuildBot— помогает в управлении проектом; строит и тестирует дерево при поступлении на CVS новых изменений
- PushOK CVS SCC proxy— плагин дляMicrosoft SCC
- boneclipse-cvsgrapher— плагин дляEclipse
Примечания
- ↑CVS: Concurrent Versions System
- ↑Contents of /ccvs/NEWS
- ↑Price D. R.Concurrent Versions System - News CVS Feature Version 1.12.13 Released!(англ.)— 2005.
- ↑[sources] Log of /cvs/ccvs/ChangeLog
- ↑CVS is out, Subversion is in(англ.)Red Hat magazine, август 2005 г.
- ↑CVS — sourceforge
- ↑CVS — система управления версиями
- ↑Concurrent Versions System CVS
- ↑CiteSeerX — CVS II: Parallelizing Software Development
См. также
- Система управления версиями
- Revision Control System— система-предшественник CVS;
- SCM— Software Configuration Management;
Ссылки
- Документация по CVS
- Краткое введение в CVS(на русском языке). Включает тесты на знание CVS.
- Джим Блэнди. Введение в CVS