2008-08-04 5 views
54

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

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

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

ответ

52

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

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

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

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

+1

Мне нужен тот же ответ для git vs subversion и git vs mercurial – 2017-01-15 20:12:06

18

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

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

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

Pro Subversion:

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

Что такое «fingolfin»? Googling это слово делает его еще более запутанным. – DuKes0mE 2015-05-15 12:57:39

+1

Fingolfin и Ender - это просто имена людей этого форума: `За каждым аргументом" есть список людей, которые согласны с тем, что этот конкретный аргумент верен. ` – hinneLinks 2015-07-06 07:02:12

7

подрыва книга имеет an appendix, что детали важных отличий от CVS, которые могут помочь вам сделать ваше решение. Эти два подхода являются более или менее той же идеей, но SVN был специально разработан для устранения долговременных недостатков в CVS, поэтому, теоретически, SVN всегда будет лучшим выбором.

14

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

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

Вы должны взглянуть на Git вместо SVN. Это DVCS, который быстро и очень мощный. Это не так удобно, как SVN, но это улучшается в этом отношении, и это не , что трудно узнать.

1

КСТАТИ: CVSNT поддерживает атомарные коммиты

2

Я второе предложение Eridius' в Git, но я бы расширить его другой DRCs (распределенная система контроля версий), такие как Mercurial и bazaar.

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

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

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

4

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

2

Как кто-то, кто находится в середине переключения между 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. Вы можете очистить, если вы начнете свои репозиции в неправильном месте, но это приведет к путанице.
0

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

0

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

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

Migra можно легко сделать за несколько часов, используя cvs2svn.

Смежные вопросы