Моя компания использует 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
Это очень специфично для данного проекта, но многие вещи применимы в целом.
Pro Subversion:
- Поддержка версионных переименований/перемещений (невозможно в CVS): Финголфин, Эндер
- Поддерживает каталоги нативно: Их можно удалять, и они версионируются: Fingolfin, Ender
- Свойства файлов версионируются; больше нет "исполняемого бита" ада: Финголфин
- Общий номер ревизии значительно упрощает версионность сборки и регрессионное тестирование: Ender, Fingolfin
- Атомарные коммиты: Fingolfin
- Интуитивное (основанное на каталогах) ветвление и тегирование: Fingolfin
- Более простые скрипты хуков (pre/post commit, etc): SumthinWicked (я использую его для Doxygen после коммитов)
- Предотвращение случайной фиксации конфликтующих файлов: Salty-horse, Fingolfin
- Поддержка пользовательской команды 'diff': Fingolfin
- Автономные диффы, и они мгновенны: sev
У SVN есть 3 главных преимущества перед CVS
В книге по Subversion есть приложение, в котором подробно описаны важные отличия от CVS, что может помочь вам принять решение. Идея этих двух подходов более или менее одинакова, но SVN был специально разработан для устранения давних недостатков CVS, поэтому, по крайней мере, теоретически, SVN всегда будет лучшим выбором.
I' ll второй Eridius' предложение Мерзавца, но I' d расширяют его до другого DRCS (Распределенная Система управления Пересмотра) такой как Подвижный и базар.
Эти продукты довольно недавние и уровень набора инструментов, и интеграция с ними кажется низкой в данный момент (на основе моего начального исследования). I' d говорят, что подходили лучше всего для разработчиков власти там (и на здесь;-)).
С другой стороны, что doesn' t CVS в настоящее время делают для Вас? От Вашего начального вопроса, Вы don' t действительно имеют любого, " CVS сосет в этом, что я мог использовать вместо этого? "
You' ve должен уравновесить затраты на любую потенциальную миграцию против преимуществ. Для существующего проекта я думаю, что было бы трудно оправдать.
Как кто-то, кто посреди переключения между CVS и SVN (первоначально мы переключили все наши проекты с cvs2svn и затем решили, что перейдем, только используя svn на новых проектах), вот некоторые проблемы, которые мы имели.
btw: CVSNT поддерживает атомный, передает
Вы должны смотреть на Мерзавца вместо SVN. It' s < название акронима =" Распределенный Контроль Вариантов System" > DVCS that' s сверкание быстро и очень сильный. It' s не столь легкий в использовании как SVN, но it' s улучшающийся в том отношении и it' s не , что трудно, чтобы учиться.
CVS (Параллельная Система Вариантов) и SVN (Подрывная деятельность) являются двумя файловыми системами контроля вариантов, которые обычно используются командами, которые сотрудничают на единственном проекте. Эти системы позволяют сотрудникам отслеживать изменения, которые внесены и знают, кто развивается, который и должно ли отделение быть применено к главному стволу или нет. CVS - значительно старше из двух, и это был стандартный инструмент сотрудничества для большого количества людей. SVN намного более новый, и он вводит много улучшений, чтобы обратиться к требованиям большинства людей.
Ну, несколько вещей, которые я чувствую, делают svn потрясающий.
Миграция может легко быть сделана через несколько часов, используя cvs2svn.