narrow: avoid looking up dirstate again when editing dirstate
The narrow extension overrides the dirstate editing functions to
restrict paths outside the narrowspec. These overrides access the
dirstate from repo.dirstate instead of using the "self" reference
passed to the overridden functions. I don't see a reason for this and
it caused me problems with a later patch (it caused infinite recursion
when I modified localrepo.dirstate()), so let's change it.
Differential Revision: https://phab.mercurial-scm.org/D4829
--- a/hgext/narrow/narrowdirstate.py Wed Sep 26 23:09:28 2018 -0700
+++ b/hgext/narrow/narrowdirstate.py Mon Oct 01 15:29:31 2018 -0700
@@ -18,10 +18,9 @@
def _editfunc(fn):
def _wrapper(self, *args):
- dirstate = repo.dirstate
narrowmatch = repo.narrowmatch()
for f in args:
- if f is not None and not narrowmatch(f) and f not in dirstate:
+ if f is not None and not narrowmatch(f) and f not in self:
raise error.Abort(_("cannot track '%s' - it is outside " +
"the narrow clone") % f)
return fn(self, *args)