Альтернатива cvs2svn для выполнения миграции cvs на svn

Я пытаюсь выполнить миграцию с cvs на svn на моем новом сервере XServe, на котором работает OS X Server. Существует известный конфликт между библиотеками cvs2svn и dbm, предустановленными в OS X. Ошибка:

ОШИБКА: cvs2svn использует пакет anydbm, который зависит от библиотек dbm более низкого уровня. В вашей системе есть dbm, с которым, как известно, у cvs2svn возникают проблемы. Чтобы использовать cvs2svn, вы должны установить библиотеку Python dbm, отличную от dumpdbm или dbm. См. http://python.org/doc/current/lib/module-anydbm.html для получения дополнительной информации.

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


person Mike2012    schedule 27.07.2009    source источник
comment
Связано с stackoverflow.com/questions/922750   -  person Quinn Taylor    schedule 10.01.2012


Ответы (5)


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

person Greg Hewgill    schedule 27.07.2009

Сам cvs2svn доступен в MacPorts, поэтому вместо библиотек dbm вы можете установить cvs2svn с помощью MacPorts:

port install cvs2svn

Если он еще не установлен, он также установит версию MacPorts python2.5 и другие зависимости. В этом нет ничего плохого, но это займет немного времени и немного дополнительного места. Преимущество в том, что у вас должна быть работающая поддерживаемая версия без необходимости бороться с дополнительными проблемами зависимостей.

person Ned Deily    schedule 27.07.2009

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

person Mike McQuaid    schedule 27.07.2009

Если у вас уже установлена ​​Subversion, убедитесь, что путь указан правильно в ваших системных переменных?

У меня была такая же проблема, и мне пришлось добавить переменные в Python_Home и путь для использования

С:\Питон27\

person Gilbert V    schedule 31.07.2012

Может быть, звучит немного безумно или излишне, но подумайте об использовании «git» (например, версии для MacPorts). Он клонирует полную историю CVS и помещает ее в репозиторий Subversion. Следующие шаги должны выполнить работу (посмотрите руководства по командам, git help «cmd»):

    port install git-core cvs cvsps svn (if necessary)

    create directory for git and init cvs git repo (let´s say ´cd ~/cvsgit´):
    git cvsimport -v -d CVSROOT module

    create new subversion repository (svnadmin) with trunk, tags, branches
    now import this new repository to a git repository:
    git svn clone -s file:///path/to/svnrepo  (without trunk, tags, branches)
    this creates a svnrepo directory; rename and move it to e.g. ~/svngit

    now add the cvs git repo to svn repo:
    cd ~/svngit
    git remote add cvsrepo ~/cvsgit
    git fetch cvsrepo

    now merge the cvs master branch to the local svn master branch:
    git merge remotes/cvsrepo/master

    finally commit to (real) svn repository:
    git svn dcommit

Готово!

person mtp    schedule 27.07.2009
comment
Но имейте в виду, что git-cvsimport, как известно, имеет серьезные проблемы с преобразованием всех репозиториев CVS, кроме самых простых: marc.info/?l=git&m=123626637729412&w=2 - person mhagger; 28.07.2009
comment
mtp: Пожалуйста, предоставьте подробности (и отчеты об ошибках!), чтобы подтвердить свою жалобу на cvs2svn. (Отказ от ответственности: я отношусь к этому немного лично, так как я сопровождаю cvs2svn.) - person mhagger; 28.07.2009