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.dat 和 git-dump.dat 在我的电脑上创建。
为了更灵活并将 CVS 作者转换为 git 作者,我想使用 options-file 方法,但这样做时出现错误。
步骤
-
pass1 (CollectRevsPass)
pass2 (CleanMetadataPass)
pass3 (CollateSymbolsPass)
工作正常,但在 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 标记)