# HG changeset patch
# User Matt Mackall <m...@selenic.com>
# Date 1474294560 18000
#      Mon Sep 19 09:16:00 2016 -0500
# Node ID 6db1b2e7d19ed317404c1275db46780d40ececb8
# Parent  133b35066bef5d9c31d13c4f0b2e4a50d1ceae87
extdata: add basic template support

This lets us expose the per-entry "freeform data".

Again, the registrar framework isn't a good fit.

diff -r 133b35066bef -r 6db1b2e7d19e mercurial/templater.py
--- a/mercurial/templater.py    Mon Sep 19 09:13:11 2016 -0500
+++ b/mercurial/templater.py    Mon Sep 19 09:16:00 2016 -0500
@@ -19,6 +19,7 @@
     parser,
     registrar,
     revset as revsetmod,
+    scmutil,
     templatefilters,
     templatekw,
     util,
@@ -352,6 +353,13 @@
         try:
             v = context.process(key, safemapping)
         except TemplateNotFound:
+            # check for extdata last
+            if 'ctx' in mapping:
+                ctx = mapping['ctx']
+                repo = ctx.repo()
+                if key in scmutil.extdatasources(repo):
+                    extdata = scmutil.extdatasource(repo, key)
+                    return extdata.get(ctx.rev(), '')
             v = default
     if callable(v):
         return v(**mapping)
diff -r 133b35066bef -r 6db1b2e7d19e tests/test-command-template.t
--- a/tests/test-command-template.t     Mon Sep 19 09:13:11 2016 -0500
+++ b/tests/test-command-template.t     Mon Sep 19 09:16:00 2016 -0500
@@ -3851,6 +3851,23 @@
   abort: bad definition of template alias "bad": at 2: not a prefix: end
   [255]
 
+Template support for extdata:
+
+  $ echo "[extdata]" >> .hg/hgrc
+  $ echo "notes = notes.txt" >> .hg/hgrc
+  $ echo "b608 this change is great!" > notes.txt
+  $ echo "10e4 this is buggy :(" >> notes.txt
+  $ echo "1e4e first post" >> notes.txt
+  $ echo "bogusnode gives no error" >> notes.txt
+  $ hg log -T "{node|short} {author} {if(notes, '# {notes}')}\n"
+  d41e714fe50d person 
+  13207e5a10d9 person 
+  bbe44766e73d person 
+  10e46f2dcbf4 person # this is buggy :(
+  97054abb4ab8 other@place 
+  b608e9d1a3f0 A. N. Other <other@place> # this change is great!
+  1e4e1b8f71e0 User Name <user@hostname> # first post
+
   $ cd ..
 
 Set up repository for non-ascii encoding tests:
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to