Mercurial:查找存在提交的所有分支

Ily*_*nin 4 mercurial branch

我有一些分支和ID X的提交,我希望Mercurial返回一个存在该提交的分支列表.

Mercurial已经在每次提交中存储了有关分支的信息,但只是在引入该提交的分支中.如果将该提交合并到其他分支中,则commit仍将仅存储原始分支名称.

jke*_*ian 10

我想你可以用这个公式得到你想要的东西

hg log -r 'descendants(X) and head()'
Run Code Online (Sandbox Code Playgroud)

head() 包括所有已命名的分支头,因此即使分支的尖端已合并到另一个命名分支,它仍将使用此公式列出.

如果您只想显示分支名称,则可能需要使用该--template '{branches}\n'命令的hg log指令.如果每个命名分支有多个头,则最终可能会使用uniq或类似.

编辑:描述这将做什么

A----B----C----D----E  Branch: default (E is a merge of F into D)
      \    \    \ /
       \    \    F     Branch B1 (closed)
        \    G-----H   Branch B2
         \    \
          \    I       Branch B2
           J           Branch B3
Run Code Online (Sandbox Code Playgroud)

如果你执行hg log -r 'descendants(C) and head()',你应该得到E,F,H和I.

  • E:你得到E,因为'default'是一个分支头,即使它有一个特殊的名字.
  • F出现是因为即使你合并到E,它仍然是一个head(),所以它出现在这个列表中
  • G不是头,虽然它确实包含C.
  • H是头,显然是C的后代
  • 从G分支,也是一个头,显然包含C.
  • J是头,但没有C作为祖先