从cvs转换为mercurial

时间:2011-04-14 21:42:03

标签: mercurial cvs

我有一个巨大的CVS存储库,我想将其转换为几个hg存储库。 This问题类似,但我使用hg convert并且我在cvs中有多个目录应该在给定的hg repo中。这是一个例子:

/sw
 .../dir1
 .../dir2
 .../dir3
 .../dir4
 .../dir5

我想在我的hg repo中使用dir1,dir2和dir4,但是dir3可以在dir5中单独使用,而且没有人会使用它。

我一直用hg convert --branchsort sw转换整个事情,其中​​sw是一个沙箱结帐,只包含我关心的目录。这让我得到了一个1.7GB的hg repo,包含了所有4个目录。 CVS repo是2.3GB,但沙盒只有159MB。 hg repo的历史可以追溯到1997年,这很棒,但其中的一些东西来自已经停产的产品。它们不需要位于常规开发人员沙箱中。

那么,有没有办法选择CVS目录进入我的新hg存储库?

2 个答案:

答案 0 :(得分:4)

您应该按照我对您链接的问题的建议。将所有内容转换为一起然后使用hg - > hg转换为使用filemap在每个repo中选择所需的部分。

将删除任何空的修订版(仅包含您在该对话中排除的文件)

hg到hg转换的速度要快得多,所以你可以只进行一次慢速CVS转换,然后一次又一次地执行hg到hg部分,直到你对结果感到满意为止。

答案 1 :(得分:1)

您是否可以访问CVS存储库存储?

如果是,那么您应该能够制作存储库的完整副本,删除您不想转换的任何文件/目录,然后运行hg convert并从本地检出工作目录库。

我说应该因为我没有尝试过,但由于CVS存储每个文件的修订历史记录,所以我没有理由认为它不应该。 可以使用像Subversion这样的SCM,它可以在单个版本中存储多个更改。