narrow: move narrowmatch-related methods to localrepo
authorMartin von Zweigbergk <martinvonz@google.com>
Wed, 28 Feb 2018 12:56:01 -0800
changeset 36471 c28b6d609c47
parent 36470 d851951b421c
child 36472 d0d5eef57fb0
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
hgext/narrow/narrowrepo.py
mercurial/localrepo.py
--- 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)