从CVS迁移到Mercurial:分离项目

时间:2010-09-24 17:22:01

标签: mercurial cvs

我们有一个具有多年开发历史的CVS存储库和一个项目下的3个项目(CVS文件夹)。这些应该是Mercurial仓库中的不同存储库。它们采用以下方案:

项目
---子项目1 ---子项目2 ---子项目3

  1. 有没有办法在cvs2hg过程中自动执行此操作?
  2. 如果没有,Mercurial流程在保留历史记录的同时将每个子项目分开(如果可能的话)。

2 个答案:

答案 0 :(得分:6)

执行此操作的最佳方法是将整个存储库从CVS转换为mercurial,然后使用带有hg convert的{​​{1}}命令将该单个mercurial repo转换为多个mercurial repos(转换将转换从hg到hg)。您的文件映射会说:

--filemap

这将丢弃不在子项目1中的所有内容,然后将子项目移到顶部(注意尾随点)。

如果您使用每个子项目的文件映射运行,每次使用完整的回购作为输入,您将最终得到您想要的。

有些人已经构建了shell脚本来执行此操作,但如果它只是其中的3个,那么它应该非常快。

答案 1 :(得分:2)

只需将cvs2hg运行三次,每次都将其指向CVS存储库中的项目子目录;如,

cvs2hg [OTHER-OPTIONS...] $CVSROOT/Project/SubProject1

将结果写入三个独立的Mercurial存储库。