graphlog: don't truncate template value at last \n
authorMads Kiilerich <mads@kiilerich.com>
Fri, 06 Jul 2012 00:30:18 +0200
changeset 17120 01d847e0fdc9
parent 17119 2e13c1bd34dc
child 17122 5d6cbfa975bf
graphlog: don't truncate template value at last \n Most uses of templates requires a trailing newline to get vertical output. Graphlog with a template without trailing newline did however not just create horisontal output like other commands would but truncated the output at the last \n. Template values without any \n were ignored completely. Graphlog will now only eat one trailing newline before it lets the flow of the graph add the necessary vertical space.
hgext/graphlog.py
tests/test-glog.t
--- a/hgext/graphlog.py	Wed Jul 04 17:29:49 2012 +0200
+++ b/hgext/graphlog.py	Fri Jul 06 00:30:18 2012 +0200
@@ -471,7 +471,9 @@
         if filematcher is not None:
             revmatchfn = filematcher(ctx.rev())
         displayer.show(ctx, copies=copies, matchfn=revmatchfn)
-        lines = displayer.hunk.pop(rev).split('\n')[:-1]
+        lines = displayer.hunk.pop(rev).split('\n')
+        if not lines[-1]:
+            del lines[-1]
         displayer.flush(rev)
         edges = edgefn(type, char, lines, seen, rev, parents)
         for type, char, lines, coldata in edges:
--- a/tests/test-glog.t	Wed Jul 04 17:29:49 2012 +0200
+++ b/tests/test-glog.t	Fri Jul 06 00:30:18 2012 +0200
@@ -2060,4 +2060,30 @@
   []
   []
 
+A template without trailing newline should do something sane
+
+  $ hg glog -r ::2 --template '{rev} {desc}'
+  o  2 mv b dir/b
+  |
+  o  1 copy a b
+  |
+
+Extra newlines must be preserved
+
+  $ hg glog -r ::2 --template '\n{rev} {desc}\n\n'
+  o
+  |  2 mv b dir/b
+  |
+  o
+  |  1 copy a b
+  |
+
+The almost-empty template should do something sane too ...
+
+  $ hg glog -r ::2 --template '\n'
+  o
+  |
+  o
+  |
+
   $ cd ..