是否有修复RCS / CVS,v文件的工具?

时间:2012-06-19 15:52:26

标签: svn cvs rcs

我正在将一大堆CVS和RCS存储库转换为Subversion。我偶尔遇到一个损坏的v文件。我已经弄清楚如何手动修复这些,但它变得乏味,我的最新项目有很多损坏的文件,比我手动修复更多。

所以我想要一个工具来解析RCS文件并修复它们。这可能意味着一些旧版本将不完整。例如,我已经看到缺少版本1.1的情况,因此添加一个带有注释的空修订,表明它缺失了。

我已经做了很多搜索,试图找到这样一个工具,但没有发现任何东西。我正要开始编写自己的工具,但我想先试试这里。

我知道我可以获取代码快照并导入它们,如果必须的话,我会诉诸于此(只是为了阻止这些建议:)

++感谢

2 个答案:

答案 0 :(得分:2)

我个人不建议手动迁移,因为这个过程非常耗时,并且无法在生成的仓库中设置完整的数据/元数据。

有一个用于将CVS迁移到SVN的工具,它被称为cvs2svn。它“是一个将CVS存储库迁移到Subversion,git或Bazaar的工具”。 您可以参考this how-to获取快速入门建议。

检查this

  

CVS只是RCS的前端,* .v文件实际上是RCS   文件。看看吧。例如,如果你有foo,请执行:

co foo
     

它将从v文件中检出foo。

还有一个RCS to SVN converter,您也可以尝试一下。

答案 1 :(得分:0)

我编写了一个Python库editrcs,它将RCS文件解析为可以修改的树,然后写成新的RCS文件。它不是为处理无效的RCS文件而设计的,但如果仅在数据部分中存在损坏,或者您修改库以解决任何损坏的元数据,则可能是一个合理的起点。

也与您的特定问题相关:

  1. RCS文件store主干的最新版本和差异在后备箱上向后移动。因此,如果历史修订版的差异无可挽回地腐败,那么它之前的任何内容都可能无法使用,或者至少是错误的,除非你能猜出改变是什么或者它没有冲突。 (分支从其分支点存储为 forward diff,因此从损坏点开始的整个分支可能会有问题。)

  2. 如果使用“rcs -o”从RCS文件中修改removed,则可以在修订编号中有效。一堆空值 如果你有一堆空值,那么修改应该是,例如:

    # Setup
    echo 1 > test
    echo "initial commit" | ci -l test
    echo 2 >> test
    echo "2" | ci -l test
    echo 3 >> test
    echo "3" | ci -l test
    
    # RCS file contains revisions 1.1, 1.2, 1.3
    rlog test
    
    # Remove revision 1.2
    rcs -o1.2 test
    
    # RCS file now contains revisions 1.1, 1.3
    rlog test