我正在将一大堆CVS和RCS存储库转换为Subversion。我偶尔遇到一个损坏的v文件。我已经弄清楚如何手动修复这些,但它变得乏味,我的最新项目有很多损坏的文件,比我手动修复更多。
所以我想要一个工具来解析RCS文件并修复它们。这可能意味着一些旧版本将不完整。例如,我已经看到缺少版本1.1的情况,因此添加一个带有注释的空修订,表明它缺失了。
我已经做了很多搜索,试图找到这样一个工具,但没有发现任何东西。我正要开始编写自己的工具,但我想先试试这里。
我知道我可以获取代码快照并导入它们,如果必须的话,我会诉诸于此(只是为了阻止这些建议:)
++感谢
答案 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文件而设计的,但如果仅在数据部分中存在损坏,或者您修改库以解决任何损坏的元数据,则可能是一个合理的起点。
也与您的特定问题相关:
RCS文件store主干的最新版本和差异在后备箱上向后移动。因此,如果历史修订版的差异无可挽回地腐败,那么它之前的任何内容都可能无法使用,或者至少是错误的,除非你能猜出改变是什么或者它没有冲突。 (分支从其分支点存储为 forward diff,因此从损坏点开始的整个分支可能会有问题。)
如果使用“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