[PATCH 2 of 2] keyword: handle "hg record" more gracefully
Christian Ebert
blacktrash at gmx.net
Sun Jan 13 14:16:06 CST 2008
# HG changeset patch
# User Christian Ebert <blacktrash at gmx.net>
# Date 1200251930 -3600
# Node ID 33028c8c4bebf0a7c616e222f9593f7eb9f43d27
# Parent 17a1ed371f07310ea4c930e2bbffedc80d6528b0
keyword: handle "hg record" more gracefully
Avoid additional hunks due to expanded keywords. However this is
still a compromise, as keyword expansions are not updated in
working directory because record should not overwrite files.
Mention above shortcomings and "hg kwexpand" workaround in help.
diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -69,6 +69,10 @@ To force expansion after enabling it, or
To force expansion after enabling it, or a configuration change, run
"hg kwexpand".
+Also, when committing with the record extension, be aware that keywords
+cannot be updated. Again, run "hg kwexpand" on the files in question
+to update keyword expansions after all changes have been checked in.
+
Expansions spanning more than one line and incremental expansions,
like CVS' $Log$, are not supported. A keyword template map
"Log = {desc}" expands to the first line of the changeset description.
@@ -103,10 +107,11 @@ class kwtemplater(object):
'Header': '{root}/{file},v {node|short} {date|utcdate} {author|user}',
}
- def __init__(self, ui, repo, inc, exc):
+ def __init__(self, ui, repo, inc, exc, hgcmd):
self.ui = ui
self.repo = repo
self.matcher = util.matcher(repo.root, inc=inc, exc=exc)[1]
+ self.hgcmd = hgcmd
self.commitnode = None
self.path = ''
@@ -144,7 +149,7 @@ class kwtemplater(object):
def expand(self, node, data):
'''Returns data with keywords expanded.'''
- if util.binary(data):
+ if util.binary(data) or self.hgcmd == 'record':
return data
return self.substitute(node, data, self.re_kw.sub)
@@ -422,7 +427,7 @@ def reposetup(ui, repo):
return
global _kwtemplater
- _kwtemplater = kwtemplater(ui, repo, inc, exc)
+ _kwtemplater = kwtemplater(ui, repo, inc, exc, hgcmd)
class kwrepo(repo.__class__):
def file(self, f, kwmatch=False):
@@ -434,7 +439,7 @@ def reposetup(ui, repo):
def wread(self, filename):
data = super(kwrepo, self).wread(filename)
- if hgcmd == 'diff' and _kwtemplater.matcher(filename):
+ if hgcmd in ('diff', 'record') and _kwtemplater.matcher(filename):
return _kwtemplater.shrink(data)
return data
More information about the Mercurial-devel
mailing list