narrow: move narrowmatch-related methods to localrepo
This patch makes it so localrepo.narrowmatch() and a few more are
always available, which will let us simplify the use sites a
bit. narrowmatch() will return an always-matcher in non-narrow repos
(just like it did when it lived in the narrow extension).
Differential Revision: https://phab.mercurial-scm.org/D2494
--- a/hgext/narrow/narrowrepo.py Tue Feb 27 23:05:39 2018 -0800
+++ b/hgext/narrow/narrowrepo.py Wed Feb 28 12:56:01 2018 -0800
@@ -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
--- a/mercurial/localrepo.py Tue Feb 27 23:05:39 2018 -0800
+++ b/mercurial/localrepo.py Wed Feb 28 12:56:01 2018 -0800
@@ -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)