[PATCH] match: added matchessubrepo method to matcher

Hannes Oldenburg hannes.christian.oldenburg at gmail.com
Tue Aug 9 09:51:57 UTC 2016


# HG changeset patch
# User Hannes Oldenburg <hannes.christian.oldenburg at gmail.com>
# Date 1470733371 0
#      Tue Aug 09 09:02:51 2016 +0000
# Node ID 83d4910236336c3a72cff356f9f002d0e0710efc
# Parent  12c72545f8627845c56b070a27eff88adefd7c16
match: added matchessubrepo method to matcher

Previously there were three local implementations of this
function in cmdutil.files, cmdutil.remove and scmutil.addremove.

diff -r 12c72545f862 -r 83d491023633 mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Sun Aug 07 14:06:20 2016 +0000
+++ 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)
diff -r 12c72545f862 -r 83d491023633 mercurial/match.py
--- a/mercurial/match.py	Sun Aug 07 14:06:20 2016 +0000
+++ 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)
 
diff -r 12c72545f862 -r 83d491023633 mercurial/scmutil.py
--- a/mercurial/scmutil.py	Sun Aug 07 14:06:20 2016 +0000
+++ b/mercurial/scmutil.py	Tue Aug 09 09:02:51 2016 +0000
@@ -950,17 +950,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)


More information about the Mercurial-devel mailing list