templater: set the correct phase for parents
authorJordi Gutiérrez Hermoso <jordigh@octave.org>
Fri, 03 Oct 2014 22:03:31 -0400
changeset 22764 1e2f54a149e8
parent 22763 7ebf91426f6a
child 22765 55dcc7fb731c
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.
mercurial/cmdutil.py
tests/test-command-template.t
--- 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