[PATCH 1 of 3] keyword: (bugfix) only set changenode for kwtemplater when committing
Christian Ebert
blacktrash at gmx.net
Wed Jan 9 04:39:25 CST 2008
# HG changeset patch
# User Christian Ebert <blacktrash at gmx.net>
# Date 1199852330 -3600
# Node ID 733158aa2bea199559a898d1975c2ed5ab83f0a0
# Parent 5379497af641f87170c1eff2d0bb2a7df2189908
keyword: (bugfix) only set changenode for kwtemplater when committing
kwexpand must always obtain changenode from filectx,
otherwise current changenode is expanded in every file.
Also fixes "hg cat <more than 1 file>".
diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -107,7 +107,7 @@ class kwtemplater(object):
self.ui = ui
self.repo = repo
self.matcher = util.matcher(repo.root, inc=inc, exc=exc)[1]
- self.node = None
+ self.commitnode = None
self.path = ''
kwmaps = self.ui.configitems('keywordmaps')
@@ -124,18 +124,20 @@ class kwtemplater(object):
False, '', False)
def substitute(self, node, data, subfunc):
- '''Obtains node if missing, and calls given substitution function.'''
- if not self.node:
+ '''Obtains file's changenode if commit node not given,
+ and calls given substitution function.'''
+ if self.commitnode:
+ fnode = self.commitnode
+ else:
c = context.filectx(self.repo, self.path, fileid=node)
- self.node = c.node()
+ fnode = c.node()
def kwsub(mobj):
'''Substitutes keyword using corresponding template.'''
kw = mobj.group(1)
self.ct.use_template(self.templates[kw])
self.ui.pushbuffer()
- self.ct.show(changenode=self.node,
- root=self.repo.root, file=self.path)
+ self.ct.show(changenode=fnode, root=self.repo.root, file=self.path)
return '$%s: %s $' % (kw, templater.firstline(self.ui.popbuffer()))
return subfunc(kwsub, data)
@@ -228,16 +230,16 @@ def _overwrite(ui, repo, node=None, expa
'''Overwrites selected files expanding/shrinking keywords.'''
ctx = repo.changectx(node)
mf = ctx.manifest()
- if files is None:
- notify = ui.debug # commit
+ if node is not None: # commit
+ _kwtemplater.commitnode = node
files = [f for f in ctx.files() if mf.has_key(f)]
- else:
- notify = ui.note # kwexpand/kwshrink
+ notify = ui.debug
+ else: # kwexpand/kwshrink
+ notify = ui.note
candidates = [f for f in files if _iskwfile(f, mf.linkf)]
if candidates:
candidates.sort()
action = expand and 'expanding' or 'shrinking'
- _kwtemplater.node = node or ctx.node()
for f in candidates:
fp = repo.file(f, kwmatch=True)
data, kwfound = fp.kwctread(mf[f], expand)
More information about the Mercurial-devel
mailing list