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

StackOverflow https://stackoverflow.com/questions/159926

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Согласен с капралом Тачи.

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

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

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

ПС:Я думаю, капрал имел в виду Меркуриальный

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

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

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

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

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

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

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

Понятия не имею, зачем вам это нужно, но переход от 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top