Mercurial中的跨存储库合并?

时间:2010-03-04 22:44:13

标签: svn mercurial

我正在考虑从SVN切换到Hg,目前有一个典型的SVN布局用于项目Foo:

Foo
  trunk
  branches
    1.0
    1.1

我可以使用hg import命令将此结构导入Hg,为主干和两个分支创建单独的存储库(使用--config convert.hg.clonebranches=1导入开关。)

现在,如果客户在Foo的v1.0中发现错误,我该如何将此修复程序应用于1.1和主干存储库?它们是旧SVN分支的单独副本,因此hg merge不起作用吗?

如果我从头开始在Hg开始一个新项目,那么我可以使用不同版本的标签,并轻松地将更改从一个标签合并到另一个标签,但从SVN导入时我没有这种奢侈...或者有我错过了什么?

2 个答案:

答案 0 :(得分:1)

我喜欢hg transplanttransplant extension homepage):这将采取提交并将其移动到某处。使用-s选项可以将其从一个仓库移动到另一个仓库。

您还可以指定要进行的合并,单个修订,多个修订,或者让它启动“交互式变更集选择器”(无论这意味着什么)。 (虽然我没有尝试过repos之间的合并选项...但我知道指定一个变更集效果很好!)

答案 1 :(得分:1)

您应该能够使用正常的推/拉合并来回来获取更改。转换足够智能,1.0和1.1的相同部分将是相同的变更集。因此,在1.0中进行更改,您应该能够将其拉入1.1和main并完全合并。

如果你认为你将从1.1和main转到1.0,只需hg update到你知道的变更集<1.0> 之前进行更改,你将成为能够干净地拉动并合并1.0中的那个。