Каковы преимущества использования SVN перед CVS? - PullRequest
57 голосов
/ 04 августа 2008

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

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

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

Ответы [ 12 ]

60 голосов
/ 04 августа 2008

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

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

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

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

19 голосов
/ 04 августа 2008

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

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
14 голосов
/ 04 августа 2008

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

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

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

4 голосов
/ 18 августа 2008

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

4 голосов
/ 18 августа 2008

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

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

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

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

2 голосов
/ 04 сентября 2008

Как человек, который находится в процессе переключения между 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 голосов
/ 18 августа 2008

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

1 голос
/ 17 июля 2018

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

1 голос
/ 07 августа 2008

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

...