Patchwork [2,of,6] templater: set the correct phase for parents

login
register
mail settings
Submitter Jordi Gutiérrez Hermoso
Date Oct. 5, 2014, 1:05 a.m.
Message ID <12236d889c04329a1e16.1412471151@Iris>
Download mbox | patch
Permalink /patch/6122/
State Accepted
Commit 1e2f54a149e811bdda87b2a8f0dc8e4be95ae602
Headers show

Comments

Jordi Gutiérrez Hermoso - Oct. 5, 2014, 1:05 a.m.
# HG changeset patch
# User Jordi Gutiérrez Hermoso <jordigh@octave.org>
# Date 1412388211 14400
#      Fri Oct 03 22:03:31 2014 -0400
# Node ID 12236d889c04329a1e165869daacc3213a60dcc1
# Parent  9f503562486cca1a723de4230d9174e005051f82
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.

Patch

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