我有一个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失败。
答案 0 :(得分:0)
我最后询问了cvs2svn用户邮件列表。我收到了Michael Haggerty的以下回复:
我不相信这个错误可能来自导入两次。据我所知 每次导入时都会创建一个新的供应商分支;例如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