Сведения о вопросе

Life

16:03, 1st July, 2020

Теги

svn   version-control   cvs    

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

Просмотров: 541   Ответов: 12

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

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

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



  Сведения об ответе

ASSembler

18:03, 1st July, 2020

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

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

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

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


  Сведения об ответе

DAAA

18:03, 1st July, 2020

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

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

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

Про Подрывную Деятельность:

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


  Сведения об ответе

прога

18:03, 1st July, 2020

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

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


  Сведения об ответе

PAGE

18:03, 1st July, 2020

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


  Сведения об ответе

PAGE

18:03, 1st July, 2020

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

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

С другой стороны, что в настоящее время не делает для вас CVS? Судя по вашему первоначальному вопросу, на самом деле у вас их нет, "CVS sucks at this, what could I use instead?"

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


  Сведения об ответе

piter

18:03, 1st July, 2020

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


  Сведения об ответе

piter

18:03, 1st July, 2020

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


  Сведения об ответе

park

18:03, 1st July, 2020

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

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


  Сведения об ответе

ASER

18:03, 1st July, 2020

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


  Сведения об ответе

baggs

18:03, 1st July, 2020

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


  Сведения об ответе

PIRLO

18:03, 1st July, 2020

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


  Сведения об ответе

ASSembler

18:03, 1st July, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться