diff --git a/hgext/narrow/narrowrepo.py b/hgext/narrow/narrowrepo.py --- a/hgext/narrow/narrowrepo.py +++ b/hgext/narrow/narrowrepo.py @@ -12,7 +12,6 @@ changegroup, hg, localrepo, - match as matchmod, narrowspec, scmutil, ) @@ -67,35 +66,6 @@ narrowrevlog.makenarrowfilelog(fl, self.narrowmatch()) return fl - @localrepo.repofilecache(narrowspec.FILENAME) - def narrowpats(self): - """matcher patterns for this repository's narrowspec - - A tuple of (includes, excludes). - """ - source = self - if self.shared(): - source = hg.sharedreposource(self) - return narrowspec.load(source) - - @localrepo.repofilecache(narrowspec.FILENAME) - def _narrowmatch(self): - if changegroup.NARROW_REQUIREMENT not in self.requirements: - return matchmod.always(self.root, '') - include, exclude = self.narrowpats - return narrowspec.match(self.root, include=include, exclude=exclude) - - # TODO(martinvonz): make this property-like instead? - def narrowmatch(self): - return self._narrowmatch - - def setnarrowpats(self, newincludes, newexcludes): - target = self - if self.shared(): - target = hg.sharedreposource(self) - narrowspec.save(target, newincludes, newexcludes) - self.invalidate(clearfilecache=True) - # I'm not sure this is the right place to do this filter. # context._manifestmatches() would probably be better, or perhaps # move it to a later place, in case some of the callers do want to know diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -43,6 +43,7 @@ merge as mergemod, mergeutil, namespaces, + narrowspec, obsolete, pathutil, peer, @@ -736,6 +737,37 @@ " working parent %s!\n") % short(node)) return nullid + @repofilecache(narrowspec.FILENAME) + def narrowpats(self): + """matcher patterns for this repository's narrowspec + + A tuple of (includes, excludes). + """ + source = self + if self.shared(): + from . import hg + source = hg.sharedreposource(self) + return narrowspec.load(source) + + @repofilecache(narrowspec.FILENAME) + def _narrowmatch(self): + if changegroup.NARROW_REQUIREMENT not in self.requirements: + return matchmod.always(self.root, '') + include, exclude = self.narrowpats + return narrowspec.match(self.root, include=include, exclude=exclude) + + # TODO(martinvonz): make this property-like instead? + def narrowmatch(self): + return self._narrowmatch + + def setnarrowpats(self, newincludes, newexcludes): + target = self + if self.shared(): + from . import hg + target = hg.sharedreposource(self) + narrowspec.save(target, newincludes, newexcludes) + self.invalidate(clearfilecache=True) + def __getitem__(self, changeid): if changeid is None: return context.workingctx(self)