--- a/hgkw/keyword.py Tue Jun 01 03:45:10 2010 +0200
+++ b/hgkw/keyword.py Wed Jun 09 17:21:12 2010 +0100
@@ -189,15 +189,14 @@
Caveat: localrepository._link fails on Windows.'''
return self.match(path) and not 'l' in flagfunc(path)
- def overwrite(self, node, expand, candidates):
+ def overwrite(self, ctx, candidates, iswctx, expand):
'''Overwrites selected files expanding/shrinking keywords.'''
- ctx = self.repo[node]
mf = ctx.manifest()
if self.record:
candidates = [f for f in ctx.files() if f in mf]
candidates = [f for f in candidates if self.iskwfile(f, ctx.flags)]
if candidates:
- self.restrict = True # do not expand when reading
+ self.restrict = True # do not expand when reading
msg = (expand and _('overwriting %s expanding keywords\n')
or _('overwriting %s shrinking keywords\n'))
for f in candidates:
@@ -208,7 +207,7 @@
if util.binary(data):
continue
if expand:
- if node is None: # kwexpand/kwshrink
+ if iswctx:
ctx = self.repo.filectx(f, fileid=mf[f]).changectx()
data, found = self.substitute(data, f, ctx,
self.re_kw.subn)
@@ -217,7 +216,7 @@
if found:
self.ui.note(msg % f)
self.repo.wwrite(f, data, mf.flags(f))
- if node is None:
+ if iswctx:
self.repo.dirstate.normal(f)
self.restrict = False
@@ -284,7 +283,8 @@
def _kwfwrite(ui, repo, expand, *pats, **opts):
'''Selects files and passes them to kwtemplater.overwrite.'''
- if len(repo[None].parents()) > 1:
+ wctx = repo[None]
+ if len(wctx.parents()) > 1:
raise util.Abort(_('outstanding uncommitted merge'))
kwt = kwtools['templater']
wlock = repo.wlock()
@@ -293,7 +293,7 @@
modified, added, removed, deleted, unknown, ignored, clean = status
if modified or added or removed or deleted:
raise util.Abort(_('outstanding uncommitted changes'))
- kwt.overwrite(None, expand, clean)
+ kwt.overwrite(wctx, clean, True, expand)
finally:
wlock.release()
@@ -496,7 +496,8 @@
n = super(kwrepo, self).commitctx(ctx, error)
# no lock needed, only called from repo.commit() which already locks
if not kwt.record:
- kwt.overwrite(n, True, sorted(ctx.added() + ctx.modified()))
+ kwt.overwrite(self[n], sorted(ctx.added() + ctx.modified()),
+ False, True)
return n
# monkeypatches
@@ -531,8 +532,9 @@
# therefore compare nodes before and after
ctx = repo['.']
ret = orig(ui, repo, commitfunc, *pats, **opts)
- if ctx != repo['.']:
- kwt.overwrite('.', True, None)
+ recordctx = repo['.']
+ if ctx != recordctx:
+ kwt.overwrite(recordctx, None, False, True)
return ret
finally:
wlock.release()