替代cvs2svn执行cvs到svn迁移

时间:2009-07-27 20:24:55

标签: python macos xserver cvs2svn gdbm

我正在尝试在运行OS X Server的新XServe服务器上执行从cvs到svn的迁移。预装OS X的cvs2svn和dbm库之间存在已知冲突。错误是:

  

错误:cvs2svn使用anydbm包,它依赖于较低级别的dbm库。您的系统具有dbm,已知cvs2svn存在问题。要使用cvs2svn,必须安装除dumbdbm或dbm之外的Python dbm库。有关详细信息,请参阅http://python.org/doc/current/lib/module-anydbm.html

我按照cvs2svn FAQ中的所有规定步骤操作,但错误仍然存​​在。有没有人知道完成这项任务的另一种方法,或者为这个看似常见的问题提供不同解决方案的另一个网站?

5 个答案:

答案 0 :(得分:7)

由于CVS和Subversion存储库实际上只是文件集合,解决此问题的一种方法可能是将CVS存储库复制到cvs2svn可以成功运行的机器上,运行它以转换为Subversion,然后复制新的存储库回到您的服务器。此方法的另一个好处是,您不会冒着在执行此转换步骤时意外弄乱服务器配置的风险。

答案 1 :(得分:3)

cvs2svn本身在MacPorts中可用,因此您可以使用MacPorts安装cvs2svn而不仅仅是dbm库:

port install cvs2svn

如果尚未安装,它还将安装MacPorts版本的python2.5和其他依赖项。这没有什么害处,但需要一点时间和一点额外的空间。优点是你应该有一个可以工作的受支持版本,而不必解决进一步的依赖问题。

答案 2 :(得分:1)

您总是可以使用例如手动安装其他dbm库。 MacPorts的。

答案 3 :(得分:1)

如果您已经安装了subversion,您是否确保在系统变量中设置了路径?

我有同样的问题,我最终不得不在Python_Home中添加变量和使用路径

C:\ Pyton27 \

答案 4 :(得分:0)

也许听起来有点疯狂或矫枉过正,但想想使用'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

你已经完成了!