2

我有一个 CVS 存储库,其目录包含两个供应商分支。初始代码是从一个来源获得的,并使用供应商名称 X 签入。几年后,新代码使用另一个供应商分支名称 Y 签入。

如果我在文本编辑器中查看 rcs 文件 (FILE,v),我会看到 X:1.1.1、一些标签……然后是 Y:1.1.1

这并没有引起我在使用 CVS 时所知道的任何问题,但现在我想使用 cvs2svn 迁移到 Subversion。

我从 cvs2svn 收到如下错误:

警告:在'/home/cvs/src/contrib/one-true-awk/FILES,v'中:分支'1.1.1'已经有名字'Y',不能也有名字'X',忽略后者

理想情况下,我想在整个历史记录中使用较新的供应商标签 Y,但我也愿意让它消失并使用旧标签。无论哪种方式,我都需要清理它,以便 cvs2svn 可以将存储库转换为 Subversion。

我可以在 CVS 的文件上运行任何命令来修复 .v 文件中的这种混乱或手动步骤吗?我已经尝试删除较新的 Y 分支线,但由于提交中的疯狂编号,仅此一项不起作用。由于第二次导入而创建了 1.2 修订版,它也导致 cvs2svn 失败。

4

1 回答 1

0

我最终询问了 cvs2svn 用户邮件列表。我收到了 Michael Haggerty 的以下回复:

我不相信这个错误可能来自两次导入。AFAIK 每次导入时都会创建一个新的供应商分支;例如 1.1.1、1.1.3 等(供应商分支的最后一个数字总是奇数),每个供应商分支都会有自己的符号名称。您遇到的情况是您只有一个供应商分支 1.1.1,并且不知何故它有两个符号名称,“X”和“Y”。

如果您告诉 cvs2svn 只是忽略不需要的符号名称,那么转换应该会毫无怨言地进行。为此,您需要通过 options-file 方法启动 cvs2svn,然后使用 IgnoreSymbolTransform。有关文档,请参阅 cvs2svn-example.options。

如果您想非常小心,您可能首先要验证您忽略的符号名称在每个文件中是否确实是多余的。或者,我认为将不需要的符号名称转换为想要的符号名称也可以,因为 cvs2svn 会忽略以相同值出现两次的符号。这将需要类似的东西

RegexpSymbolTransform(r'X', r'Y')

然后我使用 IgnoreSymbolTransform 隐藏额外的符号。

此外,由于文件已在 HEAD 中修补,然后发生了更新的导入,我遇到了次要错误。通过强制提交文件,我能够将它们放回 HEAD 并避免这种情况:

错误:文件 '/home/cvs/src/contrib/one-true-awk/FIXES,v' 具有默认分支 = 1.1.1,但也有修订版 1.2

于 2013-11-27T03:57:51.953 回答