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

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

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

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

4.08.2008 14:06:48
12 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

РЕДАКТИРОВАТЬ 2015 : Серьезно, этому ответу сейчас 7 лет. Забудьте SVN, используйте Git, как и все!

61
10.10.2015 19:12:45
Я хочу один и тот же ответ для git vs subversion и git vs mercurial
Isaac Rabinovitch 15.01.2017 20:12:06

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

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

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

Pro Subversion:

  • Поддержка версионных переименований / перемещений (невозможно с CVS): Fingolfin, Ender
  • Нативно поддерживает каталоги: их можно удалить, и они имеют версии: Fingolfin, Ender
  • Свойства файла версионны; нет больше "исполняемого бита", черт возьми: Fingolfin
  • Общий номер ревизии делает сборку версий и регрессионное тестирование намного проще: Ender, Fingolfin
  • Атомные коммиты: Финголфин
  • Интуитивное (на основе каталогов) ветвление и тегирование: Fingolfin
  • Более простые скрипты хуков (до / после коммита и т. Д.): SumthinWicked (я использую его для Doxygen после коммитов)
  • Предотвращает случайное совершение конфликтных файлов: Соленый конь, Фингольфин
  • Поддержка пользовательской команды 'diff': Fingolfin
  • Оффлайн, и они мгновенные: sev
19
4.08.2008 14:09:54
Что такое "финголфин"? Гугл это слово делает его еще более запутанным
DuKes0mE 15.05.2015 12:57:39
Финголфин и Эндер - только имена людей этого форума:Behind each "argument" is a list of people who agree that this particular argument is valid.
hinneLinks 6.07.2015 07:02:12

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

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

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

7
4.08.2008 14:14:14

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

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

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

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

4
18.08.2008 17:04:41

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

4
18.08.2008 17:22:05

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

2
18.08.2008 16:22:00

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

  • Слияния и ветвления сильно различаются, и если вы часто выполняете ветвление и слияние, если у вас на сервере не запущен SVN 1.5, вы должны знать, когда вы разветвляетесь (это не очень понятно в диалогах SVN Tortoise). Майкл говорит, что ветвление и слияние интуитивно понятно, я бы сказал, что после использования 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 . Вы можете очистить, если вы начинаете свои репо не в том месте, но это приводит к путанице.
2
4.09.2008 17:44:16

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

1
6.08.2008 23:09:43
Вы, сир, заслуживаете медали за гадание.
altinturk 16.11.2017 09:05:20

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

1
17.07.2018 07:19:01

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

0
8.10.2008 16:19:04

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

  1. Комбинация SVN-алтасского тигля - намного лучший метод анализа и проверки качества
  2. Лучшее управление конфликтами и слияниями
  3. Очевидно, это быстрее, чем принимать заказы, выполнять коммиты и т. Д.
  4. Проблема атомарного коммита. Возможно, что два человека, совершающие коммит в CVS, могут конфликтовать друг с другом, потерять некоторые данные и привести вашу базу кода в несогласованное состояние.

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

0
18.09.2016 14:01:16