# HG changeset patch # User Christian Ebert # Date 1276100472 -3600 # Node ID b8234da616351a81849e8b48b65fa61769daf2b7 # Parent 9b4e36da5ffb7333317b9de4ffeaee214e3c7412 Pass context to kwtemplater.overwrite Now that we have retrieved the context in every calling function except commit, pass it as argument to kwtemplater.overwrite to avoid looking it up twice. Reorder arguments to kwtemplater.overwrite to reflect their importance. Turn node argument into a simple boolean and rename it to iswctx. diff -r 9b4e36da5ffb -r b8234da61635 hgkw/keyword.py --- 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()