CVS

Поделись знанием:
Перейти к: навигация, поиск
CVS
Тип

Централизованная система управления версиями

Разработчик

[savannah.nongnu.org/project/memberlist.php?detailed=1&group=cvs The CVS Team]

Написана на

C[1]

Операционная система

FreeBSD, Linux, Mac OS X, Microsoft Windows

Последняя версия

1.11.23 (8 мая 2008)

Лицензия

GNU GPL

Сайт

[www.nongnu.org/cvs/ gnu.org/cvs/]

К:Википедия:Статьи без изображений (тип: не указан)

CVS (Concurrent Versions System, «Система одновременных версий») — программный продукт, относящийся к разряду систем управления версиями (англ. version control system). Хранит историю изменений определённого набора файлов, как правило, исходного кода программного обеспечения, и облегчает совместную работу группы людей (часто — программистов) над одним проектом. CVS была популярна в мире открытого ПО. Система распространяется на условиях лицензии GNU GPL.

В настоящее время активная разработка системы прекращена (последняя версия выпущена в мае 2008 года), в исходный код вносятся только небольшие исправления[2].

На данный момент CVS является устаревшей[3][4][5] системой, потому что она имеет ряд недостатков, и имеются более молодые альтернативные системы управления версиями (например, Subversion, Git, Mercurial), свободные от большинства недостатков 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), которая всё ещё используется для работы с отдельными файлами, но не целыми проектами. Дик Грун привёл[6] краткие исторические сведения о CVS на своей страничке. Вольный перевод части текста:

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

Код впервые увидел свет в конференции mod.sources 23 июня 1986 года.

Код, который в конце концов приобрёл вид текущей версии CVS, был начат совместно с Брайаном Берлинером в апреле 1989 года, с последующими дополнениями от Джеффа Полка и других участников. Брайан Берлинер написал[7] документ, описывающий улучшения программы CVS, которые она успела приобрести за время внутреннего использования в Prisma — стороннем разработчике ядра SunOS, после чего Брайан выпустил её на всеобщее обозрение под лицензией GPL.

На сегодняшний день код CVS поддерживает группа добровольцев. Интересен тот факт, что версия CVS для Microsoft Windows, отделившаяся в отдельный проект CVSNT, сейчас достаточно активно расширяет возможности системы даже портируя изменения обратно на UNIX под именем CVSNT.

Отношение CVS к проекту GNU может трактоваться неоднозначно: на одной странице сайт GNU распространяет программу как «пакет GNU», а на другой CVS находится в разделе «другой проект под лицензией GPL». На FTP-сервере программа находится в директории /non-gnu/.

Недостатки

  • Невозможно переименовать файл или директорию так, чтобы это изменение было отражено в истории.
  • Ограниченная поддержка юникода и не-ASCII имен.
  • Публикации изменений не атомарны.
  • Наборы изменений не поддерживаются.
  • Неэффективное хранение бинарных файлов.
  • Оригинальный GNU CVS не поддерживает разграничения прав между пользователями репозитория.
  • Внутренние механизмы контроля целостности практически отсутствуют, зачастую даже невозможно точно утверждать, повреждён ли репозиторий, и если да, то каким образом.[8]

Инструменты

Веб-интерфейсы для просмотра репозитория

  • [viewcvs.sourceforge.net/#sec-future viewCVS]
  • [www.freebsd.org/projects/cvsweb.html webCVS]
  • [horde.org/chora/ Chora]
  • [codestriker.sourceforge.net/index.html codestriker]
  • Bonsai

Клиенты, графические оболочки для работы с CVS

Свободные / Open source

  • Кроссплатформенные
    • [cvsgui.sourceforge.net/ CVSGUI] — набор CVS клиентов для Windows, MacOS, Linux (WinCvs, MacCvs и gCvs, соответственно)
    • [www.lincvs.org/ LinCVS] — многоплатформенная (Linux, другие Unix-like, Windows, Mac OS X) оболочка, написанная с использованием библиотеки Qt
    • Eclipse — кроссплатформенный IDE со встроенной поддержкой CVS
    • [www.twobarleycorns.net/tkcvs.html TkCVS] — многоплатформенная (Linux, другие Unix-like, Windows, MacOS X) графическая оболочка, написанная на интерпретируемом языке Tcl
    • NetBeans IDE — кроссплатформенный IDE со встроенной поддержкой CVS
  • Microsoft Windows
    • TortoiseCVS — вероятно, самый простой CVS клиент для Windows
    • [cvsgui.sourceforge.net/ WinCVS]
    • [www.bloodshed.net/ DevC++] — очень популярная IDE c CVS клиентом
  • Linux
    • [www.kde.org/apps/cervisia/ Cervisia] — (Qt) оболочка к CVS для среды KDE
    • [pharmacy.sourceforge.net/index.html pharmacy] — оболочка для среды GNOME
  • Solaris/OpenSolaris

Коммерческие

  • [www.componentsoftware.com/products/cvs CS-CVS] CVS клиент для Windows — бесплатен для Open Source разработчиков
  • [www.cvsnt.com/ CVSNT]
  • [www.syntevo.com/smartcvs/index.jsp SmartCVS]

Сервер CVS

  • [www.nongnu.org/cvs/ Главный сайт разработчиков CVS]

Прочие инструменты

  • Meld — инструмент для работы с изменениями
  • StatCvs — статистика
  • [buildbot.net/ BuildBot] — помогает в управлении проектом; строит и тестирует дерево при поступлении на CVS новых изменений
  • [www.pushok.com/soft_cvs.php PushOK CVS SCC proxy]  — плагин для Microsoft SCC
  • [www.bonevich.com/boneclipse-master/boneclipse-cvsgrapher/index.html boneclipse-cvsgrapher] — плагин для Eclipse

Напишите отзыв о статье "CVS"

Примечания

  1. [www.ohloh.net/p/cvs CVS: Concurrent Versions System]
  2. [cvs.savannah.gnu.org/viewvc/cvs/ccvs/ChangeLog [sources] Log of /cvs/ccvs/ChangeLog]
  3. [www.redhat.com/magazine/010aug05/features/subversion/ CVS is out, Subversion is in] (англ.) Red Hat magazine, август 2005 г.
  4. [sourceforge.net/apps/trac/sourceforge/wiki/CVS CVS — sourceforge]
  5. [www.citforum.ru/programming/application/cvs/ CVS — система управления версиями]
  6. [www.cs.vu.nl/~dick/CVS.html#History Concurrent Versions System CVS]
  7. [citeseer.ist.psu.edu/berliner90cvs.html CiteSeerX — CVS II: Parallelizing Software Development]
  8. [bacher09.org/hgbook/ru/html/how-did-we-get-here.html#idp32357408 Оценка CVS в книге о Mercurial]

См. также

Ссылки

  • Документация по CVS
    • [squadette.ru/cvs-ru/html_node/cvs-ru_toc.html Документация на русском языке]
  • [lib.custis.ru/index.php/CVS:%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%BE%D0%B5_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5 Краткое введение в CVS] (на русском языке). Включает тесты на знание CVS.
  • [www.citforum.ru/programming/digest/cvsintrorus.shtml Джим Блэнди. Введение в CVS]
  • [www.opennet.ru/docs/RUS/cvs/ CVS -- Система Управления Параллельными Версиями]

Отрывок, характеризующий CVS

Крестный отец дед, боясь уронить, вздрагивая, носил младенца вокруг жестяной помятой купели и передавал его крестной матери, княжне Марье. Князь Андрей, замирая от страха, чтоб не утопили ребенка, сидел в другой комнате, ожидая окончания таинства. Он радостно взглянул на ребенка, когда ему вынесла его нянюшка, и одобрительно кивнул головой, когда нянюшка сообщила ему, что брошенный в купель вощечок с волосками не потонул, а поплыл по купели.


Участие Ростова в дуэли Долохова с Безуховым было замято стараниями старого графа, и Ростов вместо того, чтобы быть разжалованным, как он ожидал, был определен адъютантом к московскому генерал губернатору. Вследствие этого он не мог ехать в деревню со всем семейством, а оставался при своей новой должности всё лето в Москве. Долохов выздоровел, и Ростов особенно сдружился с ним в это время его выздоровления. Долохов больной лежал у матери, страстно и нежно любившей его. Старушка Марья Ивановна, полюбившая Ростова за его дружбу к Феде, часто говорила ему про своего сына.
– Да, граф, он слишком благороден и чист душою, – говаривала она, – для нашего нынешнего, развращенного света. Добродетели никто не любит, она всем глаза колет. Ну скажите, граф, справедливо это, честно это со стороны Безухова? А Федя по своему благородству любил его, и теперь никогда ничего дурного про него не говорит. В Петербурге эти шалости с квартальным там что то шутили, ведь они вместе делали? Что ж, Безухову ничего, а Федя все на своих плечах перенес! Ведь что он перенес! Положим, возвратили, да ведь как же и не возвратить? Я думаю таких, как он, храбрецов и сынов отечества не много там было. Что ж теперь – эта дуэль! Есть ли чувство, честь у этих людей! Зная, что он единственный сын, вызвать на дуэль и стрелять так прямо! Хорошо, что Бог помиловал нас. И за что же? Ну кто же в наше время не имеет интриги? Что ж, коли он так ревнив? Я понимаю, ведь он прежде мог дать почувствовать, а то год ведь продолжалось. И что же, вызвал на дуэль, полагая, что Федя не будет драться, потому что он ему должен. Какая низость! Какая гадость! Я знаю, вы Федю поняли, мой милый граф, оттого то я вас душой люблю, верьте мне. Его редкие понимают. Это такая высокая, небесная душа!
Сам Долохов часто во время своего выздоровления говорил Ростову такие слова, которых никак нельзя было ожидать от него. – Меня считают злым человеком, я знаю, – говаривал он, – и пускай. Я никого знать не хочу кроме тех, кого люблю; но кого я люблю, того люблю так, что жизнь отдам, а остальных передавлю всех, коли станут на дороге. У меня есть обожаемая, неоцененная мать, два три друга, ты в том числе, а на остальных я обращаю внимание только на столько, на сколько они полезны или вредны. И все почти вредны, в особенности женщины. Да, душа моя, – продолжал он, – мужчин я встречал любящих, благородных, возвышенных; но женщин, кроме продажных тварей – графинь или кухарок, всё равно – я не встречал еще. Я не встречал еще той небесной чистоты, преданности, которых я ищу в женщине. Ежели бы я нашел такую женщину, я бы жизнь отдал за нее. А эти!… – Он сделал презрительный жест. – И веришь ли мне, ежели я еще дорожу жизнью, то дорожу только потому, что надеюсь еще встретить такое небесное существо, которое бы возродило, очистило и возвысило меня. Но ты не понимаешь этого.
– Нет, я очень понимаю, – отвечал Ростов, находившийся под влиянием своего нового друга.

Осенью семейство Ростовых вернулось в Москву. В начале зимы вернулся и Денисов и остановился у Ростовых. Это первое время зимы 1806 года, проведенное Николаем Ростовым в Москве, было одно из самых счастливых и веселых для него и для всего его семейства. Николай привлек с собой в дом родителей много молодых людей. Вера была двадцати летняя, красивая девица; Соня шестнадцати летняя девушка во всей прелести только что распустившегося цветка; Наташа полу барышня, полу девочка, то детски смешная, то девически обворожительная.
В доме Ростовых завелась в это время какая то особенная атмосфера любовности, как это бывает в доме, где очень милые и очень молодые девушки. Всякий молодой человек, приезжавший в дом Ростовых, глядя на эти молодые, восприимчивые, чему то (вероятно своему счастию) улыбающиеся, девические лица, на эту оживленную беготню, слушая этот непоследовательный, но ласковый ко всем, на всё готовый, исполненный надежды лепет женской молодежи, слушая эти непоследовательные звуки, то пенья, то музыки, испытывал одно и то же чувство готовности к любви и ожидания счастья, которое испытывала и сама молодежь дома Ростовых.
В числе молодых людей, введенных Ростовым, был одним из первых – Долохов, который понравился всем в доме, исключая Наташи. За Долохова она чуть не поссорилась с братом. Она настаивала на том, что он злой человек, что в дуэли с Безуховым Пьер был прав, а Долохов виноват, что он неприятен и неестествен.
– Нечего мне понимать, – с упорным своевольством кричала Наташа, – он злой и без чувств. Вот ведь я же люблю твоего Денисова, он и кутила, и всё, а я всё таки его люблю, стало быть я понимаю. Не умею, как тебе сказать; у него всё назначено, а я этого не люблю. Денисова…
– Ну Денисов другое дело, – отвечал Николай, давая чувствовать, что в сравнении с Долоховым даже и Денисов был ничто, – надо понимать, какая душа у этого Долохова, надо видеть его с матерью, это такое сердце!
– Уж этого я не знаю, но с ним мне неловко. И ты знаешь ли, что он влюбился в Соню?
– Какие глупости…
– Я уверена, вот увидишь. – Предсказание Наташи сбывалось. Долохов, не любивший дамского общества, стал часто бывать в доме, и вопрос о том, для кого он ездит, скоро (хотя и никто не говорил про это) был решен так, что он ездит для Сони. И Соня, хотя никогда не посмела бы сказать этого, знала это и всякий раз, как кумач, краснела при появлении Долохова.
Долохов часто обедал у Ростовых, никогда не пропускал спектакля, где они были, и бывал на балах adolescentes [подростков] у Иогеля, где всегда бывали Ростовы. Он оказывал преимущественное внимание Соне и смотрел на нее такими глазами, что не только она без краски не могла выдержать этого взгляда, но и старая графиня и Наташа краснели, заметив этот взгляд.
Видно было, что этот сильный, странный мужчина находился под неотразимым влиянием, производимым на него этой черненькой, грациозной, любящей другого девочкой.
Ростов замечал что то новое между Долоховым и Соней; но он не определял себе, какие это были новые отношения. «Они там все влюблены в кого то», думал он про Соню и Наташу. Но ему было не так, как прежде, ловко с Соней и Долоховым, и он реже стал бывать дома.
С осени 1806 года опять всё заговорило о войне с Наполеоном еще с большим жаром, чем в прошлом году. Назначен был не только набор рекрут, но и еще 9 ти ратников с тысячи. Повсюду проклинали анафемой Бонапартия, и в Москве только и толков было, что о предстоящей войне. Для семейства Ростовых весь интерес этих приготовлений к войне заключался только в том, что Николушка ни за что не соглашался оставаться в Москве и выжидал только конца отпуска Денисова с тем, чтобы с ним вместе ехать в полк после праздников. Предстоящий отъезд не только не мешал ему веселиться, но еще поощрял его к этому. Большую часть времени он проводил вне дома, на обедах, вечерах и балах.

ХI
На третий день Рождества, Николай обедал дома, что в последнее время редко случалось с ним. Это был официально прощальный обед, так как он с Денисовым уезжал в полк после Крещенья. Обедало человек двадцать, в том числе Долохов и Денисов.
Никогда в доме Ростовых любовный воздух, атмосфера влюбленности не давали себя чувствовать с такой силой, как в эти дни праздников. «Лови минуты счастия, заставляй себя любить, влюбляйся сам! Только это одно есть настоящее на свете – остальное всё вздор. И этим одним мы здесь только и заняты», – говорила эта атмосфера. Николай, как и всегда, замучив две пары лошадей и то не успев побывать во всех местах, где ему надо было быть и куда его звали, приехал домой перед самым обедом. Как только он вошел, он заметил и почувствовал напряженность любовной атмосферы в доме, но кроме того он заметил странное замешательство, царствующее между некоторыми из членов общества. Особенно взволнованы были Соня, Долохов, старая графиня и немного Наташа. Николай понял, что что то должно было случиться до обеда между Соней и Долоховым и с свойственною ему чуткостью сердца был очень нежен и осторожен, во время обеда, в обращении с ними обоими. В этот же вечер третьего дня праздников должен был быть один из тех балов у Иогеля (танцовального учителя), которые он давал по праздникам для всех своих учеников и учениц.
– Николенька, ты поедешь к Иогелю? Пожалуйста, поезжай, – сказала ему Наташа, – он тебя особенно просил, и Василий Дмитрич (это был Денисов) едет.
– Куда я не поеду по приказанию г'афини! – сказал Денисов, шутливо поставивший себя в доме Ростовых на ногу рыцаря Наташи, – pas de chale [танец с шалью] готов танцовать.
– Коли успею! Я обещал Архаровым, у них вечер, – сказал Николай.
– А ты?… – обратился он к Долохову. И только что спросил это, заметил, что этого не надо было спрашивать.
– Да, может быть… – холодно и сердито отвечал Долохов, взглянув на Соню и, нахмурившись, точно таким взглядом, каким он на клубном обеде смотрел на Пьера, опять взглянул на Николая.
«Что нибудь есть», подумал Николай и еще более утвердился в этом предположении тем, что Долохов тотчас же после обеда уехал. Он вызвал Наташу и спросил, что такое?
– А я тебя искала, – сказала Наташа, выбежав к нему. – Я говорила, ты всё не хотел верить, – торжествующе сказала она, – он сделал предложение Соне.
Как ни мало занимался Николай Соней за это время, но что то как бы оторвалось в нем, когда он услыхал это. Долохов был приличная и в некоторых отношениях блестящая партия для бесприданной сироты Сони. С точки зрения старой графини и света нельзя было отказать ему. И потому первое чувство Николая, когда он услыхал это, было озлобление против Сони. Он приготавливался к тому, чтобы сказать: «И прекрасно, разумеется, надо забыть детские обещания и принять предложение»; но не успел он еще сказать этого…