Subversion против CVS

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

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

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

есть аналогичный вопрос stackoverflow.com/questions/1261/…

hayalci 29.10.2008 03:02

@hayalci: Почему бы не сделать свой комментарий Ответом на этот вопрос? :)

Pistos 29.10.2008 03:14

@Pistos: добавил в свой ответ.

hayalci 29.10.2008 21:24

здесь, на SO, уже есть много других вопросов с возможными ответами. Вы можете взглянуть на них.

Decio Lira 03.03.2009 03:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
52
4
46 321
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

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

Обновлено: вот ссылка на аналогичный вопрос

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

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

Ответ принят как подходящий

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

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

  • может легко перемещать или переименовывать файлы или каталоги
  • атомарные коммиты
  • "дешевое" копирование и разветвление
  • коммиты - это наборы изменений для всего дерева (а не только истории отдельных файлов)

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

Что такое "cheap" copying and branching, о котором вы упомянули? Чем лучше копирование и ветвление в Subversion (по сравнению с CVS)? Благодарность!

Lazer 20.05.2010 08:44
pushok.com/software/svn-vscvs.html
krishna singh 14.07.2013 19:26

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

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

Ветви находятся в том же «пространстве имен», что и основной файл - легко отследить все моды конкретного файла.

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

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

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

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

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

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

Вы также можете просмотреть красивый график с Subversion, используя TortoiseSVN, который, к сожалению, доступен только в Windows.

Andrea Francia 09.05.2009 23:17

Что касается стабильности сторонних инструментов, в моем ограниченном личном опыте я не обнаружил, что сторонние инструменты CVS более стабильны.

Andrea Francia 09.05.2009 23:19

На данный момент они, вероятно, примерно равны. Я думал конкретно об интеграции Eclipse CVS, которая очень надежна. Инструменты Eclipse Subversion хороши, но все же содержат некоторые ошибки. У них есть граф ветвления, как у TortioiseSVN, но поскольку SVN не отслеживает точки ветвления, его вычисление занимает намного больше времени, чем граф CVS.

JW. 10.05.2009 12:10

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

  1. хорошие удаленные параметры http / https / svn vs pserver
  2. атомарные коммиты
  3. повсеместная поддержка инструментов
  4. переименовать
  5. управление версиями каталогов

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

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

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

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

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

pte: Похоже, вы имеете в виду, что CVS имеет некоторые преимущества перед SVN, что явно неверно.

Arafangion 03.03.2009 03:39

arafangion: Если вы считаете, что SVN лучше, чем CVS, вы, должно быть, не очень много использовали CVS и / или вы не делаете много тегов или слияний в SVN. Только один пример - способность CVS «перемещать» тег существенно лучше, чем у SVN-копии в pita каталога.

pte 07.04.2009 04:02

@Arafangion: файлы репозитория CVS - это файлы в формате rcs, которые вы можете легко понять и использовать в текстовом редакторе. Файлы репозитория SVN кажутся мне непрозрачными каплями. Если файловая система частично повреждена, вам может быть лучше с CVS.

David Thornley 22.07.2010 22:27

Да! SVN технически лучше, но ветвление / слияние / тегирование ужасны по сравнению с cvs. По моему личному опыту, там, где есть cvs, есть eclipse, а клиент cvs eclipse превосходен (и поставляется по умолчанию) по сравнению с различными плагинами svn. Более того, cvs + ssh + pam проще простого в настройке по сравнению с svn.

Jubal 26.01.2011 23:18

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

Mot 28.11.2011 14:38

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

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

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

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

попробуйте git, он, вероятно, будет работать намного лучше.

DGM 02.04.2009 01:01

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

Другие вопросы по теме