[PATCH] Added support for templatevar "footer" to cmdutil.py

Robert Bachmann rbachm at gmail.com
Mon Dec 28 15:14:44 CST 2009


# HG changeset patch
# User Robert Bachmann <rbachm at gmail.com>
# Date 1262019352 -3600
# Node ID 4d150b0666601c2899bd295d737b54f67734bc8e
# Parent  bf33cfb026a390234222efc7b4736a269b34e93e
Added support for templatevar "footer" to cmdutil.py

diff -r bf33cfb026a3 -r 4d150b066660 hgext/children.py
--- a/hgext/children.py	Mon Dec 28 16:48:57 2009 +0100
+++ b/hgext/children.py	Mon Dec 28 17:55:52 2009 +0100
@@ -33,7 +33,7 @@
     displayer = cmdutil.show_changeset(ui, repo, opts)
     for cctx in ctx.children():
         displayer.show(cctx)
-
+    displayer.close()
 
 cmdtable = {
     "children":
diff -r bf33cfb026a3 -r 4d150b066660 hgext/transplant.py
--- a/hgext/transplant.py	Mon Dec 28 16:48:57 2009 +0100
+++ b/hgext/transplant.py	Mon Dec 28 17:55:52 2009 +0100
@@ -430,6 +430,7 @@
             transplants = ()
             merges = ()
             break
+    displayer.close()
     return (transplants, merges)
 
 def transplant(ui, repo, *revs, **opts):
diff -r bf33cfb026a3 -r 4d150b066660 mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Mon Dec 28 16:48:57 2009 +0100
+++ b/mercurial/cmdutil.py	Mon Dec 28 17:55:52 2009 +0100
@@ -637,6 +637,7 @@
         self.header = {}
         self.hunk = {}
         self.lastheader = None
+        self.footer = None
 
     def flush(self, rev):
         if rev in self.header:
@@ -651,6 +652,10 @@
             return 1
         return 0
 
+    def close(self):
+        if self.footer != None:
+            self.ui.write(self.footer)
+
     def show(self, ctx, copies=None, **props):
         if self.buffered:
             self.ui.pushbuffer()
@@ -817,7 +822,7 @@
             (self.ui.debugflag, 'debug'),
         ]
 
-        types = {'header': '', 'changeset': 'changeset'}
+        types = {'header': '', 'footer':'', 'changeset': 'changeset'}
         for mode, postfix  in tmplmodes:
             for type in types:
                 cur = postfix and ('%s_%s' % (type, postfix)) or type
@@ -839,6 +844,10 @@
             self.ui.write(templater.stringify(self.t(key, **props)))
             self.showpatch(ctx.node())
 
+            if types['header']:
+                if self.footer == None:
+                    self.footer = templater.stringify(self.t(types['footer'], **props))
+
         except KeyError, inst:
             msg = _("%s: no key named '%s'")
             raise util.Abort(msg % (self.t.mapfile, inst.args[0]))
diff -r bf33cfb026a3 -r 4d150b066660 mercurial/commands.py
--- a/mercurial/commands.py	Mon Dec 28 16:48:57 2009 +0100
+++ b/mercurial/commands.py	Mon Dec 28 17:55:52 2009 +0100
@@ -306,6 +306,7 @@
                         "bad revision could be any of:\n"))
             for n in nodes:
                 displayer.show(repo[n])
+        displayer.close()
 
     def check_state(state, interactive=True):
         if not state['good'] or not state['bad']:
@@ -1443,6 +1444,7 @@
     displayer = cmdutil.show_changeset(ui, repo, opts)
     for n in heads:
         displayer.show(repo[n])
+    displayer.close()
 
 def help_(ui, name=None, with_version=False):
     """show help for a given topic or a help overview
@@ -1931,6 +1933,7 @@
                 continue
             count += 1
             displayer.show(other[n])
+        displayer.close()
     finally:
         if hasattr(other, 'close'):
             other.close()
@@ -2066,6 +2069,7 @@
             break
         if displayer.flush(ctx.rev()):
             count += 1
+    displayer.close()
 
 def manifest(ui, repo, node=None, rev=None):
     """output the current or given revision of the project manifest
@@ -2148,6 +2152,7 @@
         for node in repo.changelog.nodesbetween(roots=roots, heads=heads)[0]:
             if node not in roots:
                 displayer.show(repo[node])
+        displayer.close()
         return 0
 
     return hg.merge(repo, node, force=opts.get('force'))
@@ -2186,6 +2191,7 @@
             continue
         count += 1
         displayer.show(repo[n])
+    displayer.close()
 
 def parents(ui, repo, file_=None, **opts):
     """show the parents of the working directory or revision
@@ -2226,6 +2232,7 @@
     for n in p:
         if n != nullid:
             displayer.show(repo[n])
+    displayer.close()
 
 def paths(ui, repo, search=None):
     """show aliases for remote repositories
@@ -3106,7 +3113,9 @@
     that repository becomes the current tip. The "tip" tag is special
     and cannot be renamed or assigned to a different changeset.
     """
-    cmdutil.show_changeset(ui, repo, opts).show(repo[len(repo) - 1])
+    displayer = cmdutil.show_changeset(ui, repo, opts)
+    displayer.show(repo[len(repo) - 1])
+    displayer.close()
 
 def unbundle(ui, repo, fname1, *fnames, **opts):
     """apply one or more changegroup files
diff -r bf33cfb026a3 -r 4d150b066660 mercurial/templates/map-cmdline.xml
--- a/mercurial/templates/map-cmdline.xml	Mon Dec 28 16:48:57 2009 +0100
+++ b/mercurial/templates/map-cmdline.xml	Mon Dec 28 17:55:52 2009 +0100
@@ -1,5 +1,4 @@
 header = '<?xml version="1.0"?>\n<log>\n'
-# footer does not work.
 footer = '</log>\n'
 
 changeset = '<logentry revision="{rev}" node="{node}">\n{branches}{tags}{parents}<author email="{author|email|xmlescape}">{author|person|xmlescape}</author>\n<date>{date|rfc3339date}</date>\n<msg xml:space="preserve">{desc|xmlescape}</msg>\n</logentry>\n'


More information about the Mercurial-devel mailing list