Я думаю, что вы можете получить то, что вы хотите с этой формулой
hg log -r 'descendants(X) and head()'
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
Если вы выполните hg log -r 'descendants(C) and head()'
, вы должны получить E, F, H и I.
- E : Вы получаете E, потому что default является заголовком ветви, даже если у него есть специальное имя.
- F появляется, потому что даже если вы слились с E, это все равно
head()
, поэтому он отображается в этом списке - G не является головой, хотя она содержит C
- H является головой и явно является потомком C
- I , разветвленного от G,также является головой, и ясно содержит C
- J является головой, но не имеет C в качестве предка