这是后续我之前的一个问题 https://stackoverflow.com/questions/683091/how-do-i-debug-git-cvsimport-cant-see-complicated-commit.
我可以查看 cvsps 的输出(保存在我的 ~/.cvsps 目录中)并查看主要的、复杂的提交的补丁集。但是当我执行 cvsimport 来更新现有的 git 存储库时,此提交不会显示。我知道 git-cvsimport 将忽略更新时间超过 10 分钟的补丁集,以避免导入不完整的 CVS 提交。我想我还听说它将跳过无法识别关联分支的补丁集。还有哪些其他原因可能导致 git-cvsimport 忽略我的提交?我该如何调试这个?
这是 cvsps 输出的一小部分:
patchset: 50064
date: 1238445635
author: skiphoppy
tag:
tag_flags: 0
branch: HEAD
branch_add: 1
descr:
My log message
-=-END CVSPS DESCR-=-
members:
file:ordinaryChangedFile; pre_rev:1.44; post_rev:1.45; dead:0; branch_point:0
file:newFileRenamedAndModifiedFromOldFile; pre_rev:INITIAL; post_rev:1.1; dead:0; branch_point:0
file:deletedFileGoneBecauseRenamed; pre_rev:1.2; post_rev:1.3; dead:1; branch_point:0
...
branch_add: 1 行与它有什么关系吗?整个存储库中只有 9 个这样的提交;其他 50090 次提交说branch_add: 0。除此之外,我不知道从 cvsps 或 git-cvsimport 的角度来看有什么区别。提交很复杂,涉及重命名多个文件并进行相关内容修改。 CVS 绝对很难处理。当然,这对于 git 来说是一个快照,但是当真正的后端是 CVS 时,git 很难处理。
我必须再执行三次相同类型的复杂提交,而且由于 cvsimport 无法看到我的提交,我无法每次花费 4 1/2 小时从 CVS 重新导入全新的 git 存储库。
更重要的是,我担心我每天运行的 git-cvsimport (我打算将其放入 cron 中,甚至编写一个守护进程每五分钟左右运行一次)可能会miss承诺未来!我发现没有办法 git 现有的存储库来获取这些提交;我只能在一个全新的存储库中运行 git-cvsimport 并永远等待,从而失去了对许多其他分支的使用。
嗯,这可能就是问题所在。我的 git-cvsimport 行如下所示:
git cvsimport -p x ...
-p x 应该将 -x 选项传递给 cvsps,告诉它忽略之前运行时留下的缓存输出。我认为这样做的主要原因是,最后几个可能不完整的补丁集将被丢弃并在下次运行时完成。事实证明,它可能修复了更多问题,这可能就是其中之一。
我学会了以这种方式运行 git cvsimport这个博客条目 http://issaris.blogspot.com/2005/11/cvs-to-git-and-back.html,目前是 Google 上“git cvs”点击率最高的内容之一。只有在上面的过程中,我尝试通过 Perl 调试器对 cvsps 的输出运行 git-cvsimport,我才必须检查并查看哪些参数真正传递给 cvsps。我了解到 cvsps 的运行方式如下:
cvsps --norc x --cvs-direct ...
代替:
cvsps --norc -x --cvs-direct ...
我通过实验验证,当传递 x 而不是 -x 时,我从 cvsps 得到不同的输出,缺少一些补丁集(我不知道模式是什么)。由于墨菲定律,cvsps 似乎没有报告这是一个问题,而 git-cvsimport 也从未发现过它。
所以无论如何, git cvsimport 需要像这样运行:
git cvsimport -p -x ...
我的这个存储库的以前版本此时已完全解决,但我已经能够强制将最后一个问题提交到其中(不过,一些早期的提交丢失了)。所以我又要经历一次四小时的导入过程,我希望就这样!
最后一点提示:Windows 上的 git-cvsimport 似乎根本不起作用。尽管我最终得到了一棵类似于我们项目当前状态的树,但我得到的提交数量还不到 10%。它似乎缺乏几乎所有的历史......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)