在Mercurial中将选定的修订从一个分支合并到另一个分支

Ass*_*vie 7 merge mercurial branch

是否可以在Mercurial中将一系列修订从一个分支合并到另一个分支?

例如

|r1
|r2
|r3
|\___
|    | r5
|    | r6
|    | r7
|    | ...
|    | r40
|r41  
Run Code Online (Sandbox Code Playgroud)

如果我想将修订版6和7(而不是5)合并到主分支中 - 这可能吗?

这样的合并可能是微不足道的,例如,如果r5修改过的文件未在6和7中修改(如果不需要,可以安全地忽略其更改)

从分支A到分支B的多个选定修订范围怎么样?例如合并4-7,20-25和30-34?

(这不是一个真实的案例,只是一个例子.我试图理解hg是否具有我知道svn具有的这个修订范围合并功能)

Nat*_*ich 9

查看移植扩展程序​​的mercurial,我认为它将完全符合您的要求.

https://www.mercurial-scm.org/wiki/TransplantExtension


Mat*_* M. 7

简单的答案是否定的.

这与Mercurial的精神背道而驰.

你的图表意味着6依赖于5所有拉动的东西也6应该拉动,5否则就没有意义了.

在我看来,你在这里得到了Mercurial错误.如果您的更改树是线性的,那么通常表明您使用Mercurial就像使用CVS或SVN一样.

您的更改树应该更像:

   4
  / \
 /| |\
/ | | \
5 7 23 \
| | |   25
6 8 24  |
        26
Run Code Online (Sandbox Code Playgroud)

然后你可以拉开分支5或开始分支23.

现在,错误是人类,因此有一个名为export的"工具",它允许您从一个变更集创建一个简单的差异文件.

在您的具体情况下,您将:

  • 克隆存储库最多 r4
  • r6r7(导出)创建差异和从中创建差异
  • 在新克隆上应用(按顺序)(导入)
  • 进行单元测试,直到它们通过
  • 承诺
  • 拉进去 r41
  • 合并
  • 进行单元测试,直到它们通过
  • 承诺

如果您愿意,您也可以去延伸道路.操作变更集有几个有用的扩展.样本集:

在这里你可以克隆存储库(重要的是,总是在克隆上测试这些,以防万一),然后折叠你感兴趣的范围.然后你可以导出/导入它们.