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.
--- a/mercurial/cmdutil.py Fri Oct 03 19:47:57 2014 -0400
+++ b/mercurial/cmdutil.py Fri Oct 03 22:03:31 2014 -0400
@@ -1152,7 +1152,9 @@
# 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)
--- a/tests/test-command-template.t Fri Oct 03 19:47:57 2014 -0400
+++ b/tests/test-command-template.t Fri Oct 03 22:03:31 2014 -0400
@@ -877,6 +877,34 @@
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