Каковы преимущества использования SVN над CVS?
==============================================

Моя компания использует CVS как наш стандарт де-факто для управления версиями. Тем не менее, я слышал много людей говорят, что SVN лучше.

Я знаю, что SVN новее, но кроме этого, я не знаком с его преимуществами.

То, что я ищу хорошее, сжатое сравнение двух систем, отмечая любые преимущества или недостатки каждого из них в среде разработки Java / Eclipse.

 

CVS отслеживает только изменения на основе файлов с помощью файла, в то время как SVN отслеживает весь совершить в новой редакции, а это значит, что легче проследить историю вашего проекта. Добавьте тот факт, что все современное программное обеспечение управления источником использовать концепцию пересмотра поэтому гораздо проще мигрировать из SVN, чем с CVS.

Существует также атомная коммит проблема. В то время как я только столкнулся с ним один раз, вполне возможно, что 2 человека, совершающие вместе в CVS может вступать в противоречие друг с другом, теряя некоторые данные и положить ваш клиент в неустойчивом состоянии. При раннем обнаружении, эти проблемы не являются основными, потому что ваши данные все еще где-то там, но это может быть боль в стрессовых условиях.

И, наконец, не так много инструментов разрабатываются вокруг CVS больше. В то время как новые и блестящие, новые инструменты, такие как Git или Mercurial определенно отсутствие инструментов еще, SVN имеет довольно большую базу приложений на любой системе.

**EDIT 2015** : Серьезно, этот ответ 7 лет в настоящее время. Забудьте SVN, идти использовать Git , как и все остальные!

 

Один из многочисленных сравнений:

<http://wiki.scummvm.org/index.php/CVS_vs_SVN>

Теперь это очень специфично для этого проекта, но много вещей apllies в целом.

Про Subversion:

> 
> * Поддержка версионированных переименовывает / ходов (невозможна с CVS): Финголфина, Эндер
> * Поддержка каталогов изначально: Можно удалить их, и они версионируются: Финголфин, Эндер
> * Свойства файла являются версированными; не более «исполняемый бит» ад: Финголфин
> * В целом номер версия делает сборки версий и регрессивное тестирование гораздо проще: Эндер, Финголфин
> * Атомный совершает: Финголфин
> * Интуитивный (каталог на основе) ветвление и пометка: Финголфин
> * Легче сценарии крючком (до / после совершения, и т.д.): SumthinWicked (я использую его для Doxygen после совершающее)
> * Предотвращает случайное совершение конфликтующих файлов: солено-лошади, Финголфин
> * Поддержка команды пользовательского «Diff»: Финголфин
> * Offline дифференциалы, и они мгновенные: SEV
> 
> 
> 

 

Subversion книга имеет [аппендикс](http://svnbook.red-bean.com/en/1.4/svn.forcvs.html) , что детали важных отличий от CVS, которые могут помочь вам сделать ваше решение. Эти два подхода является более или менее той же идеей , но SVN была специально разработана , чтобы исправить давние недостатки в CVS так, по крайней мере теоретически, SVN всегда будет лучшим выбором.

 

СВН имеет 3 основных преимущества по сравнению с CVS

* это быстрее
* поддерживает управление версиями двоичных файлов
* и добавляет транзакционной фиксации (все или ничего)

 

Вы должны взглянуть на [Git](http://git-scm.com) вместо SVN. Это DVCS , который молниеносно быстро и очень мощный. Это не так удобно , как SVN, но это улучшение в этой области, и это не *что* трудно учиться.

 

Кстати: CVSNT поддерживает атомарные коммиты

 

Я буду вторым предложением Eridius' из Git, но я бы расширить его другим DRCs (распределенная система контроля версий) , таких как [ртутный](http://www.selenic.com/mercurial/wiki/) и [базар](http://bazaar-vcs.org/) .

Эти продукты являются сравнительно недавно и уровень оснастки и интеграции с ними кажется низкой в данный момент (на основе моего первоначального исследования). Я бы сказал, что они лучше всего подходят для силовых разработчиков там (и здесь ;-)).

С другой стороны, что **не** CVS в настоящее время сделать для вас? Из вашего первоначального вопроса, вы на самом деле не имеют какой - либо, «CVS сосет на это, что я мог бы использовать вместо этого?»

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

 

Одна вещь, чтобы не упускать из виду это экосистема. Я работал в CVSNT магазине, и я находил все более и более открытым исходным кодом инструменты, поддерживаемые SubVersion по умолчанию.

 

Как кто-то, кто находится в середине переключения между CVS и SVN (вначале мы перешли все наши проекты с cvs2svn, а затем решили, что переход только с помощью SVN на новые проекты), вот некоторые из проблем, которые мы имели.

* Слияние и ветвление очень разные, и если вы расшириться и слиться часто, если у вас есть SVN 1.5 работает на сервере должны знать, когда вы разветвленные (это не очень понятно, в диалогах Tortoise SVN). Майкл говорит, ветвление и слияние интуитивно, я бы сказал, что после использования CVS в течение 10 лет, это не так.
* Если ваш сервер работает SVN на Linux, это может быть трудно получить SA, чтобы перейти к SVN 1.5, в качестве установки по умолчанию 1.4.x.
* Слияние конфликтов не так легко и ясно (по крайней мере, для меня и моих коллег) в TortoiseSVN, как в TortoiseCVS. Трёхпанельный подход требует некоторого привыкания и WinMerge (мой любимый инструмент слияния) не делает три панели слияния.
* Осторожно: многие электронные учебники и журнальных статей , которые я читал , очевидно , не ветвятся и слияния, вы должны настроить свой главный репозиторий , как <https://svn.yoursvnserver.com/repos/YourProject/Trunk> и ветви на [https: / /svn.yoursvnserver.com/repos/YourProject/Branches/BranchX](https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX) . Вы можете очистить , если вы начнете свои операции РЕПО в неправильном месте, но это приводит к путанице.

 

Вы можете также выбрать миграцию только последний код из CVS в SVN и заморозить текущий CVS репозиторий. это будет сделать миграцию проще, и вы можете также создавать свои устаревшие релизы в старом CVS репозиторий.

 

Ну, несколько вещей, которые я чувствую, делает СВН удивительным.

1. СВН-Altassian тигель комбинация намного превосходит метод обзоров и проверок качества
2. Более эффективное управление конфликтами и слияниях
3. Это, очевидно, быстрее принимать извлечения, выполняя фиксации и т.д.
4. Атомная проблема фиксации - Вполне возможно, что 2 человека, совершающие вместе в CVS может вступать в противоречие друг с другом, теряя некоторые данные и положить ваш код базу в неустойчивом состоянии

Миграция может быть легко сделана в течение нескольких часов, используя cvs2svn.

 

CVS (Concurrent Versions System) и SVN (Subversion), две файловые системы управления версиями, которые широко используются команды, которые совместно работают над одним проектом. Эти системы позволяют коллаборационисты следить за изменениями, которые сделаны и знать, кто разрабатывает, который и будет ли ветвь должна быть применена к главному стволу или нет. CVS является намного старше из двух, и это был стандартный инструмент сотрудничества для многих людей. SVN гораздо новее и вводит много улучшений для удовлетворения потребностей большинства людей.