Альтернатива 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 но ошибка все еще сохраняется.Кто-нибудь знает альтернативный способ выполнения этой задачи или другой веб-сайт, предлагающий другое решение этой, казалось бы, распространенной проблемы?
Решение
Поскольку репозитории CVS и Subversion на самом деле представляют собой просто коллекции файлов, один из способов обойти эту проблему может заключаться в том, чтобы скопировать репозиторий CVS на компьютер, где cvs2svn может успешно работать, запустить его для преобразования в Subversion, а затем скопировать новый репозиторий обратно в ваш сервер.Дополнительным преимуществом этого метода является то, что вы не рискуете случайно испортить конфигурацию сервера при выполнении этого шага преобразования.
Другие советы
Сам cvs2svn доступен в MacPorts, поэтому вместо библиотек dbm вы можете установить cvs2svn с помощью MacPorts:
port install cvs2svn
Если он еще не установлен, он также установит версию Python2.5 для MacPorts и другие зависимости.В этом нет ничего страшного, но это займет немного времени и немного дополнительного места.Преимущество состоит в том, что у вас должна быть работающая, поддерживаемая версия без необходимости бороться с дальнейшими проблемами зависимостей.
Вы всегда можете вручную установить другие библиотеки dbm, например.МакПортс.
Если у вас уже установлена Subversion, убедитесь ли вы, что путь указан правильно в ваших системных переменных?
У меня была такая же проблема, и мне пришлось добавить переменные в Python_Home и путь для использования.
C:\Pyton27\
Возможно, это звучит немного безумно или излишне, но подумайте об использовании «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
Все готово!