[PATCH 3 of 4] mq: Add a "patch-name" field for log and a "patchname" templatekeyword

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Jun 11 07:32:01 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1307795151 -7200
# Node ID 12dce6407671dc3b52bd84d907e6bfeff14b407a
# Parent  2f70c7b232afab89e3dff1c94d013ae6c99c4a54
mq: Add a "patch-name" field for log  and a "patchname" templatekeyword

Log entry is displayed at normal level.

diff -r 2f70c7b232af -r 12dce6407671 hgext/mq.py
--- a/hgext/mq.py	Sat Jun 11 14:25:50 2011 +0200
+++ b/hgext/mq.py	Sat Jun 11 14:25:51 2011 +0200
@@ -48,6 +48,7 @@
 from mercurial import commands, cmdutil, hg, scmutil, util, revset
 from mercurial import repair, extensions, url, error
 from mercurial import patch as patchmod
+from mercurial import templatekw
 import os, sys, re, errno, shutil
 
 commands.norepo += " qclone"
@@ -3251,6 +3252,23 @@
         ui.note(_("mq:     (empty queue)\n"))
     return r
 
+def mqctxlogfield(orig, self, ctx, *args, **kwargs):
+    """Function to hook in the default changeset formater
+
+    This add a "mq-patch:" field to default changeset output (et log or out).
+    """
+    fields = orig(self, ctx, *args, **kwargs)
+    entry = self.repo.mq.statusentrymap.get(ctx.node())
+    if entry is not None:
+        fields.append(('patch-name', entry.name))
+    return fields
+
+def mqshowpatchname(repo, ctx, templ, **args):
+    """:mq-patch: String. The unmodified mq patch name of the changeset."""
+    entry = repo.mq.statusentrymap.get(ctx.node())
+    if entry is not None:
+        return entry.name
+
 def revsetmq(repo, subset, x):
     """``mq()``
     Changesets managed by MQ.
@@ -3270,6 +3288,8 @@
 
     extensions.wrapcommand(commands.table, 'import', mqimport)
     extensions.wrapcommand(commands.table, 'summary', summary)
+    extensions.wrapfunction(cmdutil.changeset_printer, 'extensionsfields', mqctxlogfield)
+    templatekw.keywords['patchname'] = mqshowpatchname
 
     entry = extensions.wrapcommand(commands.table, 'init', mqinit)
     entry[1].extend(mqopt)
diff -r 2f70c7b232af -r 12dce6407671 tests/test-mq.t
--- a/tests/test-mq.t	Sat Jun 11 14:25:50 2011 +0200
+++ b/tests/test-mq.t	Sat Jun 11 14:25:51 2011 +0200
@@ -1362,9 +1362,12 @@
   tag:         tip
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
+  patch-name:  empty
   summary:     imported patch empty
   
   
+  $ hg log -l1 --template '{patchname}\n'
+  empty
   $ hg qref -d '0 0'
   $ hg qpop
   popping empty


More information about the Mercurial-devel mailing list