# HG changeset patch # User Matt Mackall # Date 1440624434 18000 # Node ID 3095b102766123461b56c26be6c02b8b27b9902e # Parent ae65b1b4cb4639412c7837f5c5626fe83e43c009 templater: add new docheader/footer components for XML (issue4135) The existing header/footer components were templated per-changeset, and thus couldn't be correctly printed for an empty log diff -r ae65b1b4cb46 -r 3095b1027661 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Thu Sep 10 09:52:17 2015 -0400 +++ b/mercurial/cmdutil.py Wed Aug 26 16:27:14 2015 -0500 @@ -1422,7 +1422,8 @@ (self.ui.debugflag, 'debug'), ] - self._parts = {'header': '', 'footer': '', 'changeset': 'changeset'} + self._parts = {'header': '', 'footer': '', 'changeset': 'changeset', + 'docheader': '', 'docfooter': ''} for mode, postfix in tmplmodes: for t in self._parts: cur = t @@ -1431,6 +1432,16 @@ if mode and cur in self.t: self._parts[t] = cur + if self._parts['docheader']: + self.ui.write(templater.stringify(self.t(self._parts['docheader']))) + + def close(self): + if self._parts['docfooter']: + if not self.footer: + self.footer = "" + self.footer += templater.stringify(self.t(self._parts['docfooter'])) + return super(changeset_templater, self).close() + def _show(self, ctx, copies, matchfn, props): '''show a single changeset or file revision''' diff -r ae65b1b4cb46 -r 3095b1027661 mercurial/templates/map-cmdline.xml --- a/mercurial/templates/map-cmdline.xml Thu Sep 10 09:52:17 2015 -0400 +++ b/mercurial/templates/map-cmdline.xml Wed Aug 26 16:27:14 2015 -0500 @@ -1,5 +1,5 @@ -header = '\n\n' -footer = '\n' +docheader = '\n\n' +docfooter = '\n' changeset = '\n{branches}{bookmarks}{tags}{parents}{author|person|xmlescape}\n{date|rfc3339date}\n{desc|xmlescape}\n\n' changeset_verbose = '\n{branches}{bookmarks}{tags}{parents}{author|person|xmlescape}\n{date|rfc3339date}\n{desc|xmlescape}\n\n{file_adds}{file_dels}{file_mods}\n{file_copies}\n' diff -r ae65b1b4cb46 -r 3095b1027661 tests/test-command-template.t --- a/tests/test-command-template.t Thu Sep 10 09:52:17 2015 -0400 +++ b/tests/test-command-template.t Wed Aug 26 16:27:14 2015 -0500 @@ -343,6 +343,11 @@ Test xml styles: + $ hg log --style xml -r 'not all()' + + + + $ hg log --style xml