2008-10-28 4 views
51

Я использовал SVN и CVS немного, но мне нужно будет выбрать один для нового проекта, который я начну.Subversion vs CVS

Может ли кто-нибудь, кто использовал оба экстенсивно, предлагать некоторые плюсы и минусы и которые, по их мнению, лучше? Также будут оценены лучшие учебные ресурсы.

Это будет для небольшого проекта, только для одного или двух разработчиков.

+0

есть аналогичный вопрос http://stackoverflow.com/questions/1261/what-are-the-advantages-of-using-svn-over-cvs – hayalci 2008-10-29 00:02:11

+0

@hayalci: Почему бы не сделать ваш комментарий к этому вопросу? вопрос? :) – Pistos 2008-10-29 00:14:56

+1

@Pistos: добавил его к моему ответу. – hayalci 2008-10-29 18:24:43

ответ

68

Я использовал оба. Нет никакого сравнения; вы хотите svn. Единственная причина использования CVS заключается в том, что вы вводите или применяете устаревшую систему с управлением, которое не хочет изменять статус-кво. Если вы начинаете новый проект, практически логично не утверждать, что CVS лучше, чем Subversion.

Если вы google вокруг, вы должны найти множество сравнений и обоснований для использования Subversion над CVS. Некоторые из преимуществ Subversion над CVS:

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

Сказав все это, я рекомендую вам также изучить некоторые распространенные VCS, такие как Bazaar, Mercurial и git. Я лично использую git во всех моих проектах.

+3

Что вы упомянули о «дешевой» копировании и разветвлении? Как лучше копировать и разветвлять в Subversion (по сравнению с CVS)? благодаря! – Lazer 2010-05-20 04:44:19

1

Subversion - это как «лучшее CVS». Он отлично управляет файлами файлов AND. Он имеет поддержку ветвления, хотя он уступает распределенным VCS.

Вы также можете рассмотреть возможность использования распределенного VCS, такого как git, bazaar или mercurial.

Edit: Вот link to a similar question

2

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

Между этими двумя вариантами я считаю, что нет сомнений в том, что вы должны использовать Subversion. Subversion была построена как «лучший CVS», и в результате никто больше не поддерживает CVS. Subversion имеет возможность переименовывать и перемещать файлы без потери истории, поддерживает атомарные коммиты, имеет более надежный формат репозитория, имеет более современные методы доступа, имеет лучшую поддержку сторонних инструментов, и этот список можно продолжить.

8

Назовите меня старомодным, но я предпочитал модель разветвления/маркировки под CVS.

В CVS, ветки и бирки разные штук. Тег - это метка для пересмотра. Они очень полезны для таких вещей, как маркировка значка ПРОДУКЦИЯ для синхронизации файлов с вашим сервером. Вам не нужно сливаться, чтобы обновить файлы PRODUCTION - вы просто переместите тег.

Отрасли живут в одном и том же пространстве имен в качестве основного файла - легко отследить все моды определенного файла.

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

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

14

Хотя я бы выбрал Subversion над CVS в большинстве случаев, вы должны знать, что вы пропали без вести с Subversion:

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

  • Subversion не может посмотреть файл и сообщить вам, в какой момент кто-то создал ветку или тег из него. Такие инструменты, как CVSGraph, могут использовать эту информацию для рисования дерева истории файла. Чтобы сделать это с помощью Subversion, вам нужно будет искать все каталоги ветвей/тегов, и я не видел каких-либо инструментов, которые хорошо это делают.

  • CVS работает дольше, а сторонние инструменты более стабильны, по моему опыту.

22

Subversion имеет некоторые существенные победы над CVS:

  1. хорошие отдаленные варианты HTTP/HTTPS/СВН против п-сервер
  2. атомарные коммиты
  3. вездесущий инструмент поддержки
  4. переименовывать
  5. каталог версия

Однако у этого есть серьезные недостатки. Самым большим является то, что филиалы и теги не являются гражданами первого класса в svn, это просто каталоги, которые придерживаются конвенции. В дополнение к потере некоторых преимуществ реального разветвления и тегирования (упомянутых в других комментариях) самая большая проблема, которую он создает, заключается в том, что если очень легко завинчиваться.

Использование Subversion в соглашении, а не в конфигурации означает, что вам нужно заранее подумать о своей структуре репозиториев и обеспечить, чтобы все придерживались его. Кроме того, вы создаете мир обид для будущих поколений, не говоря уже о каких-либо инструментах, которые нужно задирать ваше репо.

Слияние и зеркальное отображение почти не было (хорошо помощь) до 1.5. 1.5 предпринял шаги для решения этих проблем, но есть еще возможности для улучшения. Слияние в подрывной деятельности все еще намного сложнее, чем должно быть.

SVN по сравнению с CVS почти не вызывает затруднений. Тем не менее, вы не должны, по крайней мере, подумать о том, что могут предложить DVCS (Git, Hg, Bzr), или если ваш бюджет позволяет использовать коммерческие инструменты с отличной репутацией (Accurev, Perforce).

Subversion, вероятно, правильный выбор, но вы должны сделать домашнее задание, чтобы получить наилучшие результаты. Начните с Красной книги http://svnbook.red-bean.com/

1

Обычно Subversion .. Однако вы должны следить за проблемами ресурсов.

Когда я работал в игровой компании, у нас было несколько каталогов, содержащих сотни крошечных файлов и других каталогов, содержащих несколько сотен мега файлов. Когда мы перешли с CVS на Subversion, скорость проверки репо уменьшилась с одного часа до четырех или пяти часов. Обновление также было существенно медленным.

Это почти наверняка связано с использованием либо http, либо ssh для передачи файлов, по сравнению с родным CSV-сервером, однако, поскольку это так просто настроить svn over ssh или webdav, люди склонны не думать о служебных данных протокола. Однако вы можете использовать собственный протокол svn, и это должно облегчить проблему, мы не тестировали это в моей старой компании.

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

0

Я использовал subversion в течение 3,5 лет, теперь я переехал в другую компанию, которая использует CVS для контроля источника. Во-первых, между ними не так много различий, но приступая к операции слияния (что является главной частью моих проблем), я мог бы сказать, что CVS сделал лучшую работу. Понятия ветвей/тегов в SVN сбивают с толку, хотя в CVS очень ясно. также слияние (в моем случае, интеграция ветки) намного проще в CVS, чем в SVN. Слабость CVS до сих пор в моей идее - только атомарная фиксация. в противном случае это был бы хороший выбор.

Смежные вопросы