如何找到未合并到另一个分支的所有分支(或分支头)?

时间:2013-06-26 06:34:37

标签: version-control mercurial

如何找到未合并到default分支或任何其他分支的所有分支头?

1----2----4----6----8----13----14      Branch: default (E is a merge of F into D)
 \    \    \    \ /      /    
  \    \    \    7      /        Branch B1 (closed-merged)
   \    \    5-----9---+         Branch B2 (closed-merged)
    15   \    \                  Branch B5
          \    10          Branch B3
           3    \          Branch B4
            \    11        Branch B3
             12            Branch B4

在上面的示例中(改编自this SO answer),我正在尝试构建一个搜索,该搜索将返回变更集111215以及分支(Branch B3Branch B4Branch B5)作为分支未合并到default

12相比,我还希望更改集119714Branch 5的结果

2 个答案:

答案 0 :(得分:1)

使用revsets可以像这样完成:

hg log -r 'not ancestors(14) and head()'

这应该会给你更改集11,12和15.如果用15代替14,你应该得到你期望的集合。要同时排除已关闭的分支(在您的示例中为7和9),您可以将and not closed()添加到revset定义:

hg log -r 'not ancestors(14) and head() and not closed()'

revsets上详细了解hg's help pages

答案 1 :(得分:0)

您要求的95%仅提供:

hg heads

我唯一能看错的是它确实包含了你的例子中的后备箱尖端14。