match: added matchessubrepo method to matcher
Previously there were three local implementations of this
function in cmdutil.files, cmdutil.remove and scmutil.addremove.
--- 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)