--- 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)