# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 2014-10-04 02:03:31 # Node ID 1e2f54a149e811bdda87b2a8f0dc8e4be95ae602 # Parent 7ebf91426f6aa95bef38adf533358e8a1104822c templater: set the correct phase for parents Akin to f6371cc62d2a which did this for `hg log`, the following sets the correct phase for the {phase} keyword when the context is a parent of the current cset. This allows templates such as the following to be defined, parent = '{label("log.parent changeset.{phase}", "parent: {rev}:{node|formatnode}")}\n' which when called on a parent (e.g. with the `parents` template keyword), will produce the correct phase. 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