将cvs转换为mercurial

时间:2010-11-09 08:27:19

标签: mercurial cvs

我正在尝试将CVS存储库转换为mercurial但无法使其工作。

我从一个干净的结帐开始:

cvs -d :sspi;username=xxx;hostname=yyy.local:/cvsrepos checkout repo

哪个可以正常

然后我做了:

hg convert .

但它失败了:

assuming destination .-hg
initializing destination .-hg repository
connecting to :sspi;username=xxx;hostname=yyy.local:/cvsrepos
abort: unexpected response from CVS server (expected "Valid-requests", but got 'E cvs [server aborted]: Root :sspi;username=xxx;hostname=yyy.local:/cvsrepos must be an absolute pathname\n')

我在Windows 7上运行cvsnt

修改
对此进行了更多调查,似乎mercurial启动了本地服务器cvs server,然后与该实例而不是远程服务器进行通信。

我基于以下观察结果:

  1. 我创建了一个cvs.bat文件,用于将命令行参数发送到文件。该文件显示参数“server”。
  2. 进程监视器显示hg.exe尝试打开该文件 C:\cvstest\:sspi;username=xxx;hostname=yyy.local:\cvsrepos当然失败了。
  3. 可能是hg不理解sspi连接字符串吗?

    编辑2:

    不是解决方案,但我找到了解决方法:将完整的远程存储库复制到我的计算机上:

    cvs -d :local:\localcopyofrepo checkout repo
    hg convert repo
    

    一切正常

2 个答案:

答案 0 :(得分:2)

看起来错误消息告诉您使用存储库的绝对路径名,请尝试使用

hg convert <full_path_including_drive>

而不是CVS存储库的签出沙箱上的.路径。您还可以通过在命令中添加convert来尝试在-s cvs命令中指定存储库类型,结果将如下所示:

hg convert -s cvs C:\sandbox\cvsrepos

答案 1 :(得分:0)

看起来您正在使用ConvertExtension。您是否可以从父文件夹中尝试hg convert并指定文件夹名称,而不是.,看看它是否有效?