将不同的存储库合并为一个

时间:2012-08-24 12:12:50

标签: mercurial merge repository

我有两个不同的Mercurial存储库,每个存储库都有自己的历史记录。 有没有办法将两者合并为一个既有完整历史记录的存储库呢?

2 个答案:

答案 0 :(得分:2)

您可以使用-f标记将其中一个拉入另一个:

> cd path\to\repo1
> hg pull -f path\to\repo2
> hg merge

.... deal with merge conflicts ....

> hg commit -m "Merge with repo2"

答案 1 :(得分:1)

也许。试试这种方法:

  1. 克隆回购#1
  2. 使用repo#2
  3. 中的hg export创建一组修补程序
  4. 使用hg import
  5. 将修补程序导入克隆

    当两个repos有公共文件时,这将失败。这里的解决方案是使用hg patch来应用失败的补丁。

    背景:Mercurial为每个变更集创建校验和。这个强大的加密校验和包含修改日期,用户名,父变更集的校验和和补丁。

    这意味着如果您尝试将变更集从一个仓库复制到另一个仓库,则会因为无法找到父变更集而失败。由于校验和,添加父变更集并不容易。