Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Pro Subversion:

  • Поддержка версий с переименованием/ходами (невозможно с CVS): Fingolfin, Ender
  • Поддерживает каталоги изначально: возможно удалить их, и они версируются: Fingolfin, Ender
  • Свойства файла версии; не более "исполняемый бит" ад: Fingolfin
  • Общий номер версии значительно упрощает построение версий и регрессионное тестирование: Ender, Fingolfin
  • Атомные коммиты: Fingolfin
  • Интуитивное (на основе каталогов) ветвление и тегирование: Fingolfin
  • Более простые скрипты hook (pre/post commit и т.д.): SumthinWicked (я использую его для Doxygen после коммита)
  • Предотвращает случайное совершение конфликтующих файлов: Salty-horse, Fingolfin
  • Поддержка пользовательской команды "diff": Fingolfin
  • Offline diff, и они мгновенные: sev

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

  • Слияние и разветвление очень разные, и если вы часто переходите и объединяетесь, если у вас нет SVN 1.5, работающего на вашем сервере, вы должны знать, когда вы разветвляетесь (это не очень ясно в диалогах SVT 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. Вы можете очистить, если вы запускаете свои репозитории в неправильном месте, но это приводит к путанице.

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

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

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

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

Ответ 13

В настоящее время GIT - это путь