Patchwork [3,of,3] template: add 'current' to scope during {bookmarks % ...}

login
register
mail settings
Submitter Durham Goode
Date Feb. 13, 2014, 1:24 a.m.
Message ID <c5aa4159853dc4c1b4b0.1392254649@dev010.prn1.facebook.com>
Download mbox | patch
Permalink /patch/3633/
State Superseded
Commit 5c65ee4193e13551ad9cd54010fc80094e12fec0
Headers show

Comments

Durham Goode - Feb. 13, 2014, 1:24 a.m.
# HG changeset patch
# User Durham Goode <durham@fb.com>
# Date 1392183633 28800
#      Tue Feb 11 21:40:33 2014 -0800
# Node ID c5aa4159853dc4c1b4b06941afb06ee705cd4249
# Parent  19aa10a1eff30c475695a239e6dc540d2fc4d851
template: add 'current' to scope during {bookmarks % ...}

This adds the keyword 'current' to the template scope when processing a
bookmark list. The 'current' keyword resolves to the name of the currently
active bookmark in the repo. This allows us to apply special labels to the
current bookmark to distinguish it (especially in the case where there are
multiple bookmarks on the same commit).

Example: "{bookmarks % '{bookmark}{ifeq(bookmark, current, \"*\")} '}"

Results in a space separated list of bookmarks where the current bookmark has
an asterix.

Patch

diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -195,8 +195,12 @@ 
     """:bookmarks: List of strings. Any bookmarks associated with the
     changeset.
     """
+    repo = args['ctx']._repo
     bookmarks = args['ctx'].bookmarks()
-    return showlist('bookmark', bookmarks, **args)
+    hybrid = showlist('bookmark', bookmarks, **args)
+    for value in hybrid.values:
+        value['current'] = repo._bookmarkcurrent
+    return hybrid
 
 def showchildren(**args):
     """:children: List of strings. The children of the changeset."""
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
@@ -1676,3 +1676,10 @@ 
   Rev: 0
   Ancestor: 0
   
+Test current bookmark templating
+
+  $ hg book foo
+  $ hg book bar
+  $ hg log --template "{rev} {bookmarks % '{bookmark}{ifeq(bookmark, current, \"*\")} '}\n"
+  1 bar* foo 
+  0