7

我正在将 CVS 和 RCS 存储库转换为 Subversion。我不时遇到损坏的 .v 文件。我已经想出了如何手动修复这些,但它变得乏味,而且我最新的项目有许多损坏的文件,比我更关心手动修复。

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

我做了很多搜索试图找到这样的工具,但一无所获。我正要开始编写自己的工具,但我想我应该先在这里问问。

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

++谢谢

4

2 回答 2

3

我个人不建议手动迁移,因为该过程非常耗时,并且无法在生成的 repo 中使用完整的数据/元数据集。

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

看看这个

CVS 只是 RCS 的前端,而 *.v 文件实际上是 RCS 文件。只需检查一下即可。例如,如果你有 foo,v 只需执行:

co foo

它将从 ,v 文件中检出 foo 。

还有一个RCS 到 SVN 转换器,你也可以试试。

于 2012-06-20T07:23:24.277 回答
1

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

也与您的特定问题相关:

  1. RCS 文件存储主干的最新版本,并在主干上向后追溯。因此,如果历史修订的差异是不可挽回的损坏,那么在它之前的任何东西都可能无法使用,或者至少是错误的,除非你能猜出更改是什么或者它不冲突。(分支存储为其分支点的前向差异,因此从损坏点开始的整个分支可能会出现问题。)

  2. 如果已使用“rcs -o”从 RCS 文件中删除了修订,则修订编号中的空白可能是有效的。一堆空值如果你有一堆空值应该在哪里进行修订,那么这是例如:

    # 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
    
于 2017-10-12T15:15:14.010 回答