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

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

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

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

12 ответов

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

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

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

    Pro Subversion:

    • Поддержка версий переименования / перемещения (невозможно с CVS): Fingolfin, Ender
    • Поддерживает каталоги изначально: их можно удалить, и они версионные: Fingolfin, Ender
    • Свойства файла версионные; больше нет «исполняемого бита» hell: Fingolfin
    • Общий номер редакции упрощает тестирование версий сборки и регрессионное тестирование: Ender, Fingolfin
    • Atomic commits: Fingolfin
    • Интуитивное (на основе каталогов) ветвление и пометка: Fingolfin
    • Более простые скрипты hook (pre / post commit и т. д.): SumthinWicked (я использую его для Doxygen после коммитов)
    • Предотвращает случайное совершение конфликтных файлов: Salty-horse, Fingolfin
    • Поддержка пользовательских команд diff: Fingolfin
    • Offline diffs, и они мгновенные: sev
  2. Книга Subversion содержит приложение, в котором подробно описаны важные отличия от CVS, которые могут помочь вам принять решение. Эти два подхода более или менее одинаковы, но SVN был специально разработан, чтобы исправить давние недостатки в CVS, поэтому, по крайней мере теоретически, SVN всегда будет лучшим выбором.

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

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

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

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

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

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

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

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

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

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

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

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

    • Слияние и ветвление очень различны, и если вы часто ветвитесь и сливаетесь, если у вас нет SVN 1.5, работающего на вашем сервере, нужно знать, когда вы ветвились (это не очень ясно в диалогах Tortoise SVN). Майкл говорит, что ветвление и слияние интуитивно, я бы сказал, что после использования CVS в течение 10 лет, это не так.
    • Если вы используете сервер SVN в Linux, может быть трудно заставить ваш SA перейти на svn 1.5, как установка по умолчанию 1.4.икс.
    • Слияние конфликтов в TortoiseSVN не так легко и не так ясно (по крайней мере для меня и моих коллег), как в TortoiseCVS. Подход с тремя областями требует некоторого привыкания, а WinMerge (мой предпочтительный инструмент слияния) не выполняет слияние с тремя областями.
    • Будьте осторожны: многие из онлайн-учебников и журнальных статей, которые я читал, очевидно, не ветвятся и не объединяются, вы должны настроить свой основной репозиторий как https://svn.yoursvnserver.com/repos/YourProject/Trunk и ветви на https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX . Вы можете очистить, если вы начинаете свои РЕПО в неправильном месте, но это приводит к путанице.
  9. можно также перенести только последний код из CVS в SVN и заморозить текущее РЕПО CVS. это облегчит миграцию, и вы также можете создать свои устаревшие выпуски в старом репозитории CVS.

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

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

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

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