CVS против Subversion
Concurrent Versions System (также известная как Concurrent Versioning System или CVS) — это система контроля ревизий свободного программного обеспечения, то есть открытая для публичного использования программа, которая управляет изменениями документов, программ и другой информации, хранящейся в компьютерных файлах). Она позволяет сотрудничать нескольким разработчикам.
Subversion (также известная как SVN) — это система контроля версий, используемая для поддержания текущих и предыдущих версий файлов (таких как исходный код, веб-страницы и документация). Она является прямой модернизацией CVS и ее наиболее совместимым преемником. Она также является технологией с открытым исходным кодом и широко используется во многих проектах — таких как Apache Software Foundation, Free Pascal, MediaWiki и Google code.
CVS использует архитектуру клиент-сервер — это означает, что на сервере хранится текущая версия (или версии) конкретного проекта, а также его история. Затем клиент подключается к серверу, чтобы «проверить» копию проекта, который был завершен до его подключения к серверу. Клиент может работать над этой копией проекта, а затем проверять внесенные изменения. Кроме того, что CVS позволяет одному клиенту проверять копию определенного проекта, CVS позволяет нескольким клиентам работать и проверять один и тот же проект одновременно. Клиенты могут изменять файлы в своей рабочей копии проекта и отправлять эти изменения на сервер.
Subversion фиксирует — то есть создает набор предварительных изменений и делает их постоянными — как настоящие атомарные операции (или серии операций с данными, в которых либо происходит все, либо не происходит ничего). Subversion также позволяет пользователям переименовывать, копировать, перемещать и/или удалять файлы; однако эти файлы сохраняют свою полную историю ревизий. Эта система использует разборчивый вывод, встроенную клиент-серверную многоуровневую библиотеку, а также ветвление и тегирование как дешевые операции (не зависящие от размера файла). Существуют языковые привязки для PHP, Python, Perl и Java. Стоимость Subversion также зависит от размера изменений, а не от размера данных.
CVS может поддерживать различные ветви проекта — то есть различные аспекты или перестановки одного и того же проекта могут ответвляться от исходного проекта, и CVS будет поддерживать все версии (выпущенная версия проекта образует одну ветвь для исправления ошибок, в то время как другая версия, находящаяся в разработке, может содержать новые возможности и значительные изменения и, например, образовывать ветвь того же проекта).
Резюме:
1. CVS позволяет нескольким пользователям работать над одним и тем же проектом; Subversion сохраняет текущую и предыдущую версии файлов.
2. CVS позволяет пользователям регистрироваться в одном и том же проекте и изменять его; Subversion фиксирует как настоящие атомарные операции.
3. CVS может поддерживать различные ветви проекта; Subversion использует разборчивый вывод.