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

StackOverflow https://stackoverflow.com/questions/1261

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

Мне нужно хорошее и краткое сравнение двух систем с указанием преимуществ и недостатков каждой из них в среде разработки Java/Eclipse.

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Про Subversion:

  • Поддержка переименований/перемещений с использованием версий (невозможно с CVS):Финголфин, Эндер
  • Изначально поддерживает каталоги:Их можно удалить, и они имеют версии:Финголфин, Эндер
  • Свойства файла версионны;никакого больше "исполняемого бита" ада:Финголфин
  • Общий номер ревизии значительно упрощает управление версиями сборки и регрессионное тестирование:Эндер, Финголфин
  • Атомные коммиты:Финголфин
  • Интуитивное (на основе каталогов) ветвление и тегирование:Финголфин
  • Более простые сценарии перехвата (до/после фиксации и т. д.):SumthinWicked (я использую его для Doxygen после коммитов)
  • Предотвращает случайное сохранение конфликтующих файлов:Соленый конь, Финголфин
  • Поддержка пользовательской команды diff:Финголфин
  • Автономные различия, и они мгновенные:сев

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

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

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

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

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

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

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

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

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

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

  • Слияние и ветвление очень разные, и если вы часто выполняете ветвления и слияния, если на вашем сервере не работает SVN 1.5, вам нужно знать, когда вы разветвлялись (это не очень ясно в диалоговых окнах Tortoise SVN).Майкл говорит, что ветвление и слияние интуитивно понятно, но я бы сказал, что после 10 лет использования CVS это не так.
  • Если вы используете сервер 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 .Вы можете навести порядок, если начнете свои репозитории не в том месте, но это приведет к путанице.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top