[PATCH 3 of 3] keyword: disable expansion for annotate

Christian Ebert blacktrash at gmx.net
Wed Jun 11 20:28:22 CDT 2008


# HG changeset patch
# User Christian Ebert <blacktrash at gmx.net>
# Date 1213232493 -7200
# Node ID 072348530d50444dc628e8be2752b1c5980ebf72
# Parent  6e7c0324316554ed604e8c6d93c9db7bc1198569
keyword: disable expansion for annotate

Keyword expansion should not be annotated.
Annotate revision when unexpanded keyword was inserted.

Add test.

diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -88,7 +88,7 @@
 commands.optionalrepo += ' kwdemo'
 
 # hg commands that do not act on keywords
-nokwcommands = ('add addremove bundle copy export grep incoming init'
+nokwcommands = ('add addremove annotate bundle copy export grep incoming init'
                 ' log outgoing push rename rollback tip'
                 ' convert email glog')
 
@@ -515,6 +515,11 @@
             kwt.restrict = True
         patch_diff(repo, node1, node2, match, fp, changes, opts)
 
+    def kwweb_annotate(web, req, tmpl):
+        '''Wraps webcommands.annotate turning off keyword expansion.'''
+        kwt.matcher = util.never
+        return webcommands_annotate(web, req, tmpl)
+
     def kwweb_changeset(web, req, tmpl):
         '''Wraps webcommands.changeset turning off keyword expansion.'''
         kwt.matcher = util.never
@@ -529,11 +534,13 @@
 
     patchfile_init = patch.patchfile.__init__
     patch_diff = patch.diff
+    webcommands_annotate = webcommands.annotate
     webcommands_changeset = webcommands.changeset
     webcommands_filediff = webcommands.filediff
 
     patch.patchfile.__init__ = kwpatchfile_init
     patch.diff = kw_diff
+    webcommands.annotate = kwweb_annotate
     webcommands.changeset = webcommands.rev = kwweb_changeset
     webcommands.filediff = webcommands.diff = kwweb_filediff
 
diff --git a/tests/test-keyword b/tests/test-keyword
--- a/tests/test-keyword
+++ b/tests/test-keyword
@@ -214,6 +214,8 @@
 echo % hg cat
 hg cat sym a b
 echo
+echo % annotate
+hg annotate a
 
 echo % remove
 hg debugrebuildstate
diff --git a/tests/test-keyword.out b/tests/test-keyword.out
--- a/tests/test-keyword.out
+++ b/tests/test-keyword.out
@@ -294,6 +294,11 @@
 $Xinfo: User Name <user at example.com>: firstline $
 ignore $Id$
 a
+% annotate
+1: expand $Id$
+1: do not process $Id:
+1: xxx $
+2: $Xinfo$
 % remove
 % status
 % rollback


More information about the Mercurial-devel mailing list