Каковы преимущества использования SVN перед CVS?
-
08-06-2019 - |
Вопрос
Моя компания использует 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
Это очень специфично для этого проекта, но в целом многое применимо.
Про Subversion:
- Поддержка переименований/перемещений с использованием версий (невозможно с CVS):Финголфин, Эндер
- Изначально поддерживает каталоги:Их можно удалить, и они имеют версии:Финголфин, Эндер
- Свойства файла версионны;никакого больше "исполняемого бита" ада:Финголфин
- Общий номер ревизии значительно упрощает управление версиями сборки и регрессионное тестирование:Эндер, Финголфин
- Атомные коммиты:Финголфин
- Интуитивное (на основе каталогов) ветвление и тегирование:Финголфин
- Более простые сценарии перехвата (до/после фиксации и т. д.):SumthinWicked (я использую его для Doxygen после коммитов)
- Предотвращает случайное сохранение конфликтующих файлов:Соленый конь, Финголфин
- Поддержка пользовательской команды diff:Финголфин
- Автономные различия, и они мгновенные:сев
SVN имеет три основных преимущества перед CVS.
- это быстрее
- поддерживает управление версиями двоичных файлов
- и добавляет транзакционную фиксацию (все или ничего)
В книге Subversion есть приложение здесь подробно описаны важные отличия от CVS, которые могут помочь вам принять решение.Эти два подхода более или менее имеют одну и ту же идею, но SVN был специально разработан для исправления давних недостатков CVS, поэтому, по крайней мере теоретически, SVN всегда будет лучшим выбором.
Я поддержу предложение Eridius о Git, но я бы расширил его до других DRCS (распределенной системы контроля версий), таких как Меркуриальный и базар.
Эти продукты появились сравнительно недавно, и уровень инструментов и интеграции с ними на данный момент кажется низким (согласно моим первоначальным исследованиям).Я бы сказал, что они лучше всего подходят разработчикам электроэнергии там (и здесь ;-)).
С другой стороны, что не делает CVS в настоящее время подходит вам?Судя по вашему первоначальному вопросу, у вас его на самом деле нет: «CVS отстой, что я могу использовать вместо этого?»
Вы должны сопоставить затраты на любую потенциальную миграцию с выгодами.Для существующего проекта, я думаю, это будет трудно оправдать.
Одна вещь, которую нельзя упускать из виду, — это экосистема.Я работал в магазине CVSNT и обнаружил, что все больше и больше инструментов с открытым исходным кодом поддерживают SubVersion по умолчанию.
кстати:CVSNT поддерживает атомарные коммиты.
Как человек, который находится в процессе переключения между CVS и SVN (первоначально мы переключили все наши проекты на cvs2svn, а затем решили, что будем переходить, используя svn только в новых проектах), вот некоторые из проблем, с которыми мы столкнулись.
- Слияние и ветвление очень разные, и если вы часто выполняете ветвления и слияния, если на вашем сервере не работает SVN 1.5, вам нужно знать, когда вы разветвлялись (это не очень ясно в диалоговых окнах Tortoise SVN).Майкл говорит, что ветвление и слияние интуитивно понятно, но я бы сказал, что после 10 лет использования CVS это не так.
- Если вы используете сервер 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 .Вы можете навести порядок, если начнете свои репозитории не в том месте, но это приведет к путанице.
Вам следует взглянуть на Гит вместо СВН.Это молниеносно быстрая и мощная система DVCS.Он не так удобен для пользователя, как SVN, но в этом отношении он становится лучше, и это не так. что трудно учиться.
CVS (система параллельных версий) и SVN (SubVersioN) — это две файловые системы контроля версий, которые широко используются командами, работающими над одним проектом.Эти системы позволяют сотрудникам отслеживать вносимые изменения и знать, кто что разрабатывает и следует ли применять ветку к основной магистрали или нет.CVS является гораздо более старой из двух систем и является стандартным инструментом совместной работы для многих людей.SVN намного новее и содержит множество улучшений, отвечающих потребностям большинства людей.
вы также можете перенести только последнюю версию кода из CVS в SVN и заморозить текущий репозиторий CVS.это облегчит миграцию, и вы также сможете создавать свои устаревшие выпуски в старом репозитории CVS.
Ну, есть несколько вещей, которые, по моему мнению, делают svn потрясающим.
- Комбинация тиглей SVN-Altassian представляет собой гораздо лучший метод анализа и проверки качества.
- Лучшее управление конфликтами и слияниями
- Очевидно, что это быстрее при оформлении заказов, выполнении коммитов и т. д.
- Проблема атомарной фиксации. Вполне возможно, что два человека, выполняющие совместную фиксацию в CVS, могут конфликтовать друг с другом, теряя некоторые данные и переводя вашу кодовую базу в несогласованное состояние.
Миграцию можно легко выполнить за несколько часов с помощью cvs2svn.