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.
--- 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 ..