cvs2git 结帐因选项文件 (Windows) 而中止

cvs2git checkout aborted with options-file (Windows)

我正在尝试将 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 作者,我想使用选项文件方法,但这样做时出现错误。

步骤

  1. pass1 (CollectRevsPass)
  2. pass2 (CleanMetadataPass)
  3. pass3 (Collat​​eSymbolsPass)

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

Filtering out excluded symbols and summarizing items... ERROR: The command 'cvs -Q -R -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 aborted]: Local access to network share not supported (Use -N to o verride this error).

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

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

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

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

"Local access to network share is not supported" 的问题是 CVSNT 的一个特点。错误消息还建议解决方案:将 -N 添加到选项中。您可以通过遵循 the instructions here 并调整传递给 CVSRevisionReader 构造函数的参数来做到这一点:

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

希望对您有所帮助!