Есть ли разумный способ перейти с Subversion на CVS?

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


person stu    schedule 01.10.2008    source источник
comment
Я не могу придумать ни одной веской причины, по которой вы предпочли бы CVS Subversion. У вас возникли определенные проблемы с переходом, которые вы хотели бы задать на этом сайте?   -  person Logan    schedule 02.10.2008
comment
Какие у вас проблемы с SVN, чтобы вы захотели вернуться?   -  person    schedule 02.10.2008
comment
@stu, ты либо обманщик, либо тролль! :-)   -  person Duncan Smart    schedule 02.10.2008
comment
Стю, я полностью согласен со всеми, что Subversion лучше CVS. Но вы не спросили, что лучше, вы спросили, есть ли путь миграции с одного на другой. Это не первый раз, когда я вижу, как кто-то спрашивает, как сделать что-то непопулярное, когда наиболее популярным ответом было не делать этого. Раздражает меня   -  person Mark Roddy    schedule 02.10.2008
comment
Что ж, иногда лучший ответ - не делать чего-то. Если бы кто-нибудь спросил, какой меч лучше всего подходит для того, чтобы выпотрошить себя? Вы ожидали увидеть много рекомендаций по самым острым типам мечей?   -  person davr    schedule 02.10.2008
comment
Не понимаю, невольно переключился. Как они могли переключиться, не планируя / не зная об этом? Неужели какой-то ниндзя ворвался и мигрировал всю вашу систему с CVS на Subversion посреди ночи?   -  person AShelly    schedule 02.10.2008
comment
Иногда лучший ответ - не делать чего-либо. Это как-раз тот случай. Жаль, что вам не нравится ответ, это не меняет его.   -  person Chris Hanson    schedule 02.10.2008
comment
LOL, Ашелли. Это прекрасный пример насмешки, зачем вам это нужно? синдром на сайтах вопросов и ответов, даже на этом. Меня всегда удивляло, сколько из этих респондентов просто не умеют держать язык за зубами, хотя они явно не та информация, которую ищет спрашивающий.   -  person harpo    schedule 02.10.2008
comment
Учитывая, что SVN обычно считается лучше CVS, добавление «обновления» в заголовок вопроса всегда спровоцировало некую религиозную войну. Я бы посоветовал переформулировать вопрос, чтобы он звучал более нейтрально в отношении CVS и SVN.   -  person SpoonMeiser    schedule 02.10.2008
comment
Я думаю, что Стю мог быть просто троллем. Если бы я только мог применять теги.   -  person Marcin    schedule 02.10.2008
comment
Нет, я не тролль. Я скажу, что кто-то изменил вопрос, и это был не я. Готов поспорить, если бы я сказал, что обновление cvs до Subversion, это так и осталось бы «обновление», но, видимо, кто-то решил, что они знают мою ситуацию лучше, чем я, и что я, должно быть, ошибаюсь.   -  person stu    schedule 04.10.2008
comment
Что касается невольно: системный администратор обновлял среду разработки, у него были проблемы с запуском pserver, поэтому он решил, ничего не зная о Subversion, за исключением того, что он был новее и не просил разработчиков, насколько мне известно, вместо этого установить svn.   -  person stu    schedule 04.10.2008
comment
Я думаю, что программисты, будучи из более умной группы населения, смогут увидеть, что если кто-то делает что-то отличное от них, возможно, есть причина, выходящая за рамки их понимания. Хотя, может, это мудрость, а не интеллект.   -  person stu    schedule 04.10.2008
comment
@stu нашел этот вопрос случайно, четыре года спустя - просто из любопытства, мне интересно, чем вы в итоге стали заниматься. Вы остались с SVN, вернулись к CVS или перешли на что-то новое и модное, например git?   -  person noamtm    schedule 15.11.2012


Ответы (13)


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

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

Я также считаю, что вы ничего не получите, вернувшись к CVS, но если вы захотите это сделать, то, скорее всего, вы напишете свой собственный сценарий. Команда "svn export", несомненно, будет полезна в этом деле.

person Mark Bessey    schedule 01.10.2008
comment
Как ты посмел на самом деле ответить на заданный вопрос! - person ; 02.10.2008

Так что же в SVN, что ваша компания так не любит, а CVS лучше? Разработчики SVN изо всех сил старались сделать работу с SVN похожей на CVS. Если вы используете клиент Tortoise в качестве внешнего интерфейса, опыт будет очень похожим. SVN дает вам атомарные коммиты, которые, хотя и не совсем соответствуют стандарту Perforce, намного опережают CVS.

Я должен посочувствовать твоему положению. Я повысил уровень нашей команды разработчиков и ИТ-специалистов с CVS до SVN. У меня есть все нужные скрипты Python для обновления всей истории версий, и мы успешно используем SVN почти 4 года. Около трех месяцев назад руководитель ИТ-команды решил «обновить» все свои проекты с SVN, чтобы угадайте, что? Правильно, тяжеловес систем контроля версий: SourceSafe!

Я бы определенно остановился на SVN или даже посмотрел на некоторые из более новых распределенных систем, таких как Mercurial. В этих системах нет центрального сервера. Они полагаются на возможность ветвления и слияния десятков или сотен пиров. Вы определяете свою собственную топологию, поэтому, например, вы должны указать конкретный одноранговый узел как тот, который выполняет ежедневные сборки.

person Mike Thompson    schedule 01.10.2008
comment
Перейти с SVN на VSS? За этим комментарием стоит история, достойная TheDailyWTF? Ты все еще работаешь с этим дебилом? - person Anthony; 02.10.2008

Я не думаю, что существуют инструменты, позволяющие двигаться в другом направлении, потому что на них нет большого спроса.

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

Кстати, мне искренне интересно узнать, какие у вас проблемы с SVN.

person Community    schedule 01.10.2008
comment
Меня тоже интересует, что такого плохого в SVN, что предпочтительнее CVS: по моему опыту, SVN - это все, что такое CVS, и многое другое! - person antik; 02.10.2008
comment
Во-первых теги. Во-вторых ветки. В-третьих, отношение разработчиков svn к тому, как вы должны заново изучить, что такое теги, чтобы подрывная деятельность теперь имела смысл, а не заставляла инструмент работать разумным образом. Линус Торвальдс отлично рассказал о git в Google, и я думаю, что упомянул несколько вещей, почему svn не так хорош. - person stu; 07.10.2009
comment
@stu Что Линус сказал о подрывной деятельности: Когда я говорю, что я страстно ненавижу CVS, я должен также сказать, что если в аудитории есть пользователи SVN (Subversion), вы, возможно, захотите уйти. Поскольку моя ненависть к CVS означает, что я считаю Subversion самым бессмысленным проектом из когда-либо начатых. Некоторое время девизом Subversion была CVS или что-то в этом роде, и если вы начнете с такого слогана, вам некуда будет деваться. Невозможно правильно сделать CVS. Я не согласен с ним, но мне действительно непонятно, как это может поддержать ваш аргумент cvs ›svn. - person Gordon Wrigley; 22.08.2011

SVN не очень хорош. SVN лучше CVS. Если вы хотите сменить кассу Mercurial, GIT, Bazaar.

person Sarien    schedule 01.10.2008
comment
Ыкаганович, это смешно. - person Marcin; 02.10.2008

Один аспект git не обсуждался, когда он был доведен до вашего сведения во всех этих других ответах: git обеспечивает эмуляцию сервера cvs, чтобы вы могли перейти на git (svn на git прост и хорошо поддерживается), а затем использовать cvs-серверный интерфейс для централизованного доступа к репозиторию. Никто не должен знать, что вы используете git в фоновом режиме, и вам не нужно иметь дело с проблемами распределенного резервного копирования.

person Olaf Kock    schedule 02.10.2008

Не апгрейд. Не делайте этого.

Серьезно, почему вы предпочли бы CVS SVN? CVS - это буквально игрушка, которая делает вид, что позволяет командам работать без явного общения. Это действительно ужасно.

Если вам по какой-либо причине нужно что-то другое, кроме SVN, посмотрите другие системы контроля версий. Их много, и почти все они лучше, чем CVS (на самом деле, только Visual Source Safe так плохо).

person Marcin    schedule 01.10.2008
comment
cvs обрабатывает теги и ветки более удобным для меня способом, чем subversion. - person stu; 02.10.2008
comment
Или вы можете узнать, как это сделать в SVN. Серьезно, если у вас никогда не было проблем с конфигурацией SVN, скорее всего, у вас крошечный проект. Я предлагаю вам взглянуть на другие системы контроля версий, если вам нужно что-то другое, кроме SVN. - person Marcin; 02.10.2008
comment
@Marcin: Сделайте глубокий вдох, взгляните на перспективу и перестаньте предполагать, что только потому, что вы не понимаете мотивацию OP, он, должно быть, идиот. - person ; 02.10.2008
comment
@Mike F - Я почти уверен, что нет никаких причин, по которым кто-то хотел бы это делать, кроме незнания. Даже развертывание собственной системы VCS, основанной на RCS, имело бы больший смысл. - person Marcin; 11.10.2008
comment
Каждый раз, когда кто-то в моем офисе подходит ко мне и упоминает, насколько раздражает подрывная деятельность, я вспоминаю эту ветку. Да, Subversion новее, да, это версии в базе данных, да, он может выполнять атомарные операции, но теги не являются тегами, они являются копиями, это делает теги бесполезными и создает больший беспорядок, чем отсутствие тегов вообще. Просто я так часто расстраиваюсь из-за этого, что скучаю по cvs. И эта ветка. :-) - person stu; 07.10.2009

Ваши возможности, вероятно, действительно ограничены. Помните, что активная разработка CVS некоторое время назад прекратилась, поэтому, вероятно, для вас нет инструментов от разработчиков CVS. А поскольку одной из основных целей svn было улучшение CVS, эти разработчики, вероятно, не ожидали, что кто-то пойдет назад.

Но если вам не нравится подрывная деятельность, почему бы не взглянуть на более современные распределенные системы (git, mercurial и т. Д.)?

person matli    schedule 01.10.2008

когда все, что у вас есть, это молоток, все выглядит как гвоздь.

Лучше всего выучить svn, это сделает более знающими.

person Keith Fitzgerald    schedule 01.10.2008
comment
У меня есть двухлетний опыт работы с svn и 10+ с cvs. Subversion новее, но для меня не лучше. Не будем драться. - person stu; 02.10.2008

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

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

С помощью Svn вы можете перемещать / переименовывать файл без потери его истории; вы получаете более безопасные коммиты (коммиты - это атомарные операции) и глобальные изменения.

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

PS: Я думаю, капрал имел в виду Mercurial

person Brian Clozel    schedule 01.10.2008
comment
Возможно, я вырос на CVS и научился пользоваться преимуществами того, что он может делать, чего не может svn, поэтому я нахожу его недостатком. Например, у меня есть рабочий каталог, с которым работают все мои сценарии сборки и т. Д., И я хочу отменить (обновить с помощью тега) изменение в одном файле и перестроить. CVS может, SVN нет. - person stu; 04.10.2008

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

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

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

person xyz    schedule 02.10.2008
comment
Я ценю ответ от кого-то, кто не «ты идиот, потому что пытаешься сделать что-то непопулярное». Спасибо. +1 - person stu; 03.10.2008

единственные 2 недостатка Subversion, которые я могу придумать для пользователей, пришедших из CVS:

  • скорость оформления заказа через http (s)
  • отсутствие модулялинов

первый может быть решен с помощью svn (+ ssh), который является более сопоставимым форматом, поскольку CVS также использует свой собственный протокол. второй вариант немного сложнее, но его можно эмулировать с помощью svn: externals (у которого есть свои неприятные побочные эффекты). Если вы столкнулись с какими-либо другими дополнительными недостатками, я все слышу ..

person Peter Parker    schedule 02.10.2008

Просто обратите внимание на один момент: Bazzar, Mercurial и т. Д. (Которые были здесь советованы некоторыми людьми) - все это распределенные системы контроля версий. Я обнаружил, что с помощью таких инструментов почти невозможно управлять большими группами программистов, работающих над одним и тем же исходным кодом. В моей компании мы используем SVN, и он отлично справляется со своей задачей.

person Zamel    schedule 02.10.2008
comment
Не могли бы вы подробнее рассказать о своем опыте? Sun выбрала Mercurial из-за того, что он может использоваться большими группами программистов, поэтому то, что вы нашли, очень ценно. - person Thorbjørn Ravn Andersen; 19.08.2009
comment
По моему опыту, лучше всего обновлять / объединять / разрешать конфликты как можно чаще (не реже одного раза в день), особенно в проектах, близких к крайнему сроку. ИМХО, распределенные системы побуждают работать самостоятельно. - person Zamel; 25.08.2009

Понятия не имею, зачем вам это нужно, но переход от SVN -> GIT -> CVS может работать

Вы бы сбежали ..

git svn clone http://thesvnserver ourrepo

Затем используйте следующее руководство для экспорта обратно в CVS (не совсем уверен, что это сработает):

http://issaris.blogspot.com/2005/11/cvs-to-git-and-back.html.

git cvsexportcommit 4a20cbafdf25a141b31a8333284a332d1a4d6072

Также есть git cvsserver

person dbr    schedule 14.04.2010