From patchwork Tue Aug 9 09:51:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: match: added matchessubrepo method to matcher From: Hannes Oldenburg X-Patchwork-Id: 16228 Message-Id: <83d4910236336c3a72cf.1470736317@localhost.localdomain> To: mercurial-devel@mercurial-scm.org Date: Tue, 09 Aug 2016 09:51:57 +0000 # HG changeset patch # User Hannes Oldenburg # 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)