changeset 16678:48b1674ac1e7 stable

templater: handle SyntaxError when parsing ui.logtemplate Before, Mercurial would crash with a traceback ending with SyntaxError: unmatched quotes if you configured [ui] logtemplate = {rev}\n The SyntaxError is now catched and the string is re-parsed without requiring quotes.
author Martin Geisler <martin@geisler.net>
date Sat, 12 May 2012 22:12:54 +0200
parents 2fdd1902ed2d
children 2950d186a927
files mercurial/cmdutil.py tests/test-command-template.t
diffstat 2 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Sat May 12 09:43:12 2012 +0200
+++ b/mercurial/cmdutil.py	Sat May 12 22:12:54 2012 +0200
@@ -910,7 +910,10 @@
     if not (tmpl or style):
         tmpl = ui.config('ui', 'logtemplate')
         if tmpl:
-            tmpl = templater.parsestring(tmpl)
+            try:
+                tmpl = templater.parsestring(tmpl)
+            except SyntaxError:
+                tmpl = templater.parsestring(tmpl, quoted=False)
         else:
             style = util.expandpath(ui.config('ui', 'style', ''))
 
--- a/tests/test-command-template.t	Sat May 12 09:43:12 2012 +0200
+++ b/tests/test-command-template.t	Sat May 12 22:12:54 2012 +0200
@@ -45,6 +45,15 @@
   $ hg mv second fourth
   $ hg commit -m third -d "2020-01-01 10:01"
 
+Quoting for ui.logtemplate
+
+  $ hg tip --config "ui.logtemplate={rev}\n"
+  8
+  $ hg tip --config "ui.logtemplate='{rev}\n'"
+  8
+  $ hg tip --config 'ui.logtemplate="{rev}\n"'
+  8
+
 Make sure user/global hgrc does not affect tests
 
   $ echo '[ui]' > .hg/hgrc