0

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

所有命令都来自这个cvs2git 文档。当我使用命令行选项执行此操作时:

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 方法,但这样做时出现错误。

步骤

  1. pass1 (CollectRevsPass)
  2. pass2 (CleanMetadataPass)
  3. 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 来覆盖此错误)。

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

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

4

1 回答 1

2

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

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

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

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

希望有帮助!

于 2017-11-14T05:29:44.093 回答