переключение - svn уроки




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

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

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

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

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


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

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

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

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


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


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


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


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

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

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


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

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

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

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

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

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





cvs