match: added matchessubrepo method to matcher
authorHannes Oldenburg <hannes.christian.oldenburg@gmail.com>
Tue, 09 Aug 2016 09:02:51 +0000
changeset 29770 2372182e505b
parent 29769 976cd337cac9
child 29771 e584c6235500
match: added matchessubrepo method to matcher Previously there were three local implementations of this function in cmdutil.files, cmdutil.remove and scmutil.addremove.
mercurial/cmdutil.py
mercurial/match.py
mercurial/scmutil.py
--- a/mercurial/cmdutil.py	Mon Aug 08 22:06:07 2016 -0700
+++ b/mercurial/cmdutil.py	Tue Aug 09 09:02:51 2016 +0000
@@ -2415,11 +2415,7 @@
         ret = 0
 
     for subpath in sorted(ctx.substate):
-        def matchessubrepo(subpath):
-            return (m.exact(subpath)
-                    or any(f.startswith(subpath + '/') for f in m.files()))
-
-        if subrepos or matchessubrepo(subpath):
+        if subrepos or m.matchessubrepo(subpath):
             sub = ctx.sub(subpath)
             try:
                 submatch = matchmod.subdirmatcher(subpath, m)
@@ -2450,16 +2446,8 @@
     total = len(subs)
     count = 0
     for subpath in subs:
-        def matchessubrepo(matcher, subpath):
-            if matcher.exact(subpath):
-                return True
-            for f in matcher.files():
-                if f.startswith(subpath):
-                    return True
-            return False
-
         count += 1
-        if subrepos or matchessubrepo(m, subpath):
+        if subrepos or m.matchessubrepo(subpath):
             ui.progress(_('searching'), count, total=total, unit=_('subrepos'))
 
             sub = wctx.sub(subpath)
--- a/mercurial/match.py	Mon Aug 08 22:06:07 2016 -0700
+++ b/mercurial/match.py	Tue Aug 09 09:02:51 2016 +0000
@@ -320,6 +320,10 @@
             kindpats.append((kind, pat, ''))
         return kindpats
 
+    def matchessubrepo(self, subpath):
+        return (self.exact(subpath)
+                or any(f.startswith(subpath + '/') for f in self.files()))
+
 def exact(root, cwd, files, badfn=None):
     return match(root, cwd, files, exact=True, badfn=badfn)
 
--- a/mercurial/scmutil.py	Mon Aug 08 22:06:07 2016 -0700
+++ b/mercurial/scmutil.py	Tue Aug 09 09:02:51 2016 +0000
@@ -948,17 +948,9 @@
     ret = 0
     join = lambda f: os.path.join(prefix, f)
 
-    def matchessubrepo(matcher, subpath):
-        if matcher.exact(subpath):
-            return True
-        for f in matcher.files():
-            if f.startswith(subpath):
-                return True
-        return False
-
     wctx = repo[None]
     for subpath in sorted(wctx.substate):
-        if opts.get('subrepos') or matchessubrepo(m, subpath):
+        if opts.get('subrepos') or m.matchessubrepo(subpath):
             sub = wctx.sub(subpath)
             try:
                 submatch = matchmod.subdirmatcher(subpath, m)