如何清理CVS供应商分支导入?

时间:2013-11-23 16:11:42

标签: cvs cvs2svn

我有一个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失败。

1 个答案:

答案 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