Mercurial:查找存在提交的所有分支
我有几个分支和一个ID为X的commit,我希望Mercurial返回一个存在该commit的分支列表Mercurial:查找存在提交的所有分支,mercurial,branch,Mercurial,Branch,我有几个分支和一个ID为X的commit,我希望Mercurial返回一个存在该commit的分支列表 Mercurial已经在每次提交中存储了有关分支的信息,但只存储了有关引入该提交的分支的信息。如果您将该提交合并到其他分支中,提交仍将只存储原始分支名称。我认为您可以使用此公式获得所需的内容 hg log -r 'descendants(X) and head()' head()包括所有命名的分支头,因此即使分支尖端已合并到另一个命名分支中,它仍将与此公式一起列出 如果只想显示分支名称,则可
Mercurial已经在每次提交中存储了有关分支的信息,但只存储了有关引入该提交的分支的信息。如果您将该提交合并到其他分支中,提交仍将只存储原始分支名称。我认为您可以使用此公式获得所需的内容
hg log -r 'descendants(X) and head()'
head()
包括所有命名的分支头,因此即使分支尖端已合并到另一个命名分支中,它仍将与此公式一起列出
如果只想显示分支名称,则可能需要对hg log
命令使用--template'{branchs}\n'
指令。如果每个命名分支有一个以上的头,则最终可能会使用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
如果执行hg log-r‘子体(C)和head()’,应该得到E、F、H和I
- E:您得到E,因为“default”是一个分支头,尽管它有一个特殊的名称
- 出现F是因为即使您合并到E中,它仍然是
,所以它显示在这个列表中head()
- G不是头,尽管它包含C
- H是一个头,显然是C的后代
- I由G分支,也是一个头部,显然含有C
- J是头,但没有C作为祖先