将多个子版本加入一个并保留Mercurial中的历史记录

时间:2010-10-07 14:24:10

标签: mercurial subrepos

目前我的项目由多个存储库组成,例如:

+---Project (main repo)
    +---Core (subrepo)
    +---Web (subrepo)
    \---Tests (subrepo)

不幸的是,subrepos之间的代码是完全耦合的,所以它不能很好地与分支机构配合使用。

有没有办法将subrepos整合到一个保存历史记录的主存储库中?

3 个答案:

答案 0 :(得分:8)

我首先将hg convert与一个排除.hgsub和子目录的文件图一起使用。接下来,在subrepos上使用hg convert,在文件映射中重命名条目,如:rename . Core

获得这些新的回购后,您可以使用hg pull -f一次将转换后的子目录中的变更集导入到已转换的主仓库中。您还需要将它们合并到新的主要仓库中(它们形成单独的头部,并将空修订版作为最新的共同祖先)。

答案 1 :(得分:3)

首先猜测: 也许将convert extension与文件映射一起使用?

另一次尝试:

  • 将所有repos拉入同一个仓库,“默认”分支将有不同的头部
  • 然后为每个头
    • 更新到此主管
    • 将文件(hg move)移动到正确的目录
  • 将所有“默认”头合并在一起

编辑:添加了更多详细信息,另一次尝试

答案 2 :(得分:0)

假设您不必转换回购,为什么不简单地将每个回购推送到中央回购?

  1. 确保每个repo根目录都有一个以repo名称命名的主目录。
  2. 推送主仓库中的每个仓库。