diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1152,7 +1152,9 @@ class changeset_templater(changeset_prin # behaviour cannot be changed so leave it here for now. def showparents(**args): ctx = args['ctx'] - parents = [[('rev', p.rev()), ('node', p.hex())] + parents = [[('rev', p.rev()), + ('node', p.hex()), + ('phase', p.phasestr())] for p in self._meaningful_parentrevs(ctx)] return showlist('parent', parents, **args) diff --git a/tests/test-command-template.t b/tests/test-command-template.t --- a/tests/test-command-template.t +++ b/tests/test-command-template.t @@ -877,6 +877,34 @@ Include works: 1 0 +Check that {phase} works correctly on parents: + + $ cat << EOF > parentphase + > changeset_debug = '{rev} ({phase}):{parents}\n' + > parent = ' {rev} ({phase})' + > EOF + $ hg phase -r 5 --public + $ hg phase -r 7 --secret --force + $ hg log --debug -G --style ./parentphase + @ 8 (secret): 7 (secret) -1 (public) + | + o 7 (secret): -1 (public) -1 (public) + + o 6 (draft): 5 (public) 4 (draft) + |\ + | o 5 (public): 3 (public) -1 (public) + | | + o | 4 (draft): 3 (public) -1 (public) + |/ + o 3 (public): 2 (public) -1 (public) + | + o 2 (public): 1 (public) -1 (public) + | + o 1 (public): 0 (public) -1 (public) + | + o 0 (public): -1 (public) -1 (public) + + Missing non-standard names give no error (backward compatibility): $ echo "changeset = '{c}'" > t