cvs2git checkout 使用选项文件中止(Windows)

Posted

技术标签:

【中文标题】cvs2git checkout 使用选项文件中止(Windows)【英文标题】:cvs2git checkout aborted with options-file (Windows) 【发布时间】:2017-11-13 08:59:14 【问题描述】:

我正在尝试将 CVS 存储库转换为 GIT。但我只想逐个模块转换,否则我会得到错误提交和文件差异。 该存储库包含 1 个 CVSROOT 和 4 个模块。

所有命令都来自这个cvs2git documentation。 当我使用命令行选项时:

python path\to\cvs2git --blobfile=cvs2svn-tmp\git-blob.dat --dumpfile=cvs2svn-tmp\git-dump.dat "--username=cvs2git" \\remoteServer\path\to\myrepo\module

迁移工作。

存储库位于远程服务器上,git-blob.datgit-dump.dat 在我的电脑上创建。

为了更灵活并将 CVS 作者转换为 git 作者,我想使用 options-file 方法,但这样做时出现错误。

步骤

    pass1 (CollectRevsPass) pass2 (CleanMetadataPass) pass3 (Collat​​eSymbolsPass)

工作正常,但在 pass4 (FilterSymbolsPass) 中出现错误: 我要转换的模块的路径是\\remoteServer\path\to\myrepo\module

过滤掉排除的符号并汇总项目...错误: 命令 'cvs -Q -R -f -d :local:\\remoteServer\path\to\myrepo K co -r1.1 -p -kb module/.cvsignore' 失败,退出状态=1, 以下输出: cvs [checkout aborted]: 本地访问网络 不支持共享(使用 -N 来覆盖此错误)。

我不知道这是为什么,因为我在选项文件和命令行方法中使用了相同的存储库路径。

那么我该如何解决这个问题呢?

【问题讨论】:

【参考方案1】:

如果您从命令行运行cvs2git,默认是使用内部代码从CVS 中读取数据。但是如果你使用选项文件方法运行它,默认是使用CVSRevisionReader,它使用cvs命令从你的CVS存储库中获取信息。

一种选择是告诉选项方法使用ExternalBlobGenerator 而不是GitRevisionCollector。但是如果您的存储库实际上是由 CVSNT 编写的(而不是标准 CVS),那么建议您使用CVSRevisionReader

“不支持对网络共享的本地访问”的问题是 CVSNT 特有的。错误消息还建议了解决方案:将-N 添加到选项中。您可以通过关注the instructions here 并调整传递给CVSRevisionReader 构造函数的参数来做到这一点:

CVSRevisionReader(cvs_executable=r'cvs', global_options=['-q', '-N', '-f']),

希望有帮助!

【讨论】:

感谢您的快速响应。我复制了global_options=['-q', '-N', '-f'] 并按照说明添加了它。收到此错误:ERROR: The command 'cvs -q -N -f -d :local:\\\\remoteServer\\path\\to\\myrepo K co -r1.1 -p -kb module/.cvsignore' failed with exit status=1 and the following output: cvs checkout: connect to XXX.X.X.X(XXX.X.X.X:abcd):abcd failed: No connection could be made because the target machine actively refused it. cvs [checkout aborted]: Couldn't connect to lock server 但如果是服务器问题,为什么当我不使用选项文件时它会起作用? 涉及到锁服务器?我对此一无所知;它必须是 CVSNT 恶作剧。我的回答的第一段解释了为什么它在使用命令行方法时起作用。

以上是关于cvs2git checkout 使用选项文件中止(Windows)的主要内容,如果未能解决你的问题,请参考以下文章

cvs2git 迁移不同于 git 和 cvs 的二进制文件(用 -kb 标记)

Pentaho 中止选项不起作用

CVS2GIT-转换:运行git fast-import时出错“mark ... not declared”

如何检查 cvs2git 是不是仍在运行?

cvs2git 在哪里记录它的迁移状态?

在 Jenkins 中从管道中止当前构建