add: replace match.bad() monkey patching with match.badmatch()
The previous code didn't restore the original method, but it looks like the
worst that would happen is junk added to a list that had already been processed
by previous subrepo invocation(s).
--- a/mercurial/cmdutil.py Thu Jun 04 21:37:59 2015 -0400
+++ b/mercurial/cmdutil.py Thu Jun 04 21:49:50 2015 -0400
@@ -2213,15 +2213,16 @@
def add(ui, repo, match, prefix, explicitonly, **opts):
join = lambda f: os.path.join(prefix, f)
bad = []
- oldbad = match.bad
- match.bad = lambda x, y: bad.append(x) or oldbad(x, y)
+
+ badfn = lambda x, y: bad.append(x) or match.bad(x, y)
names = []
wctx = repo[None]
cca = None
abort, warn = scmutil.checkportabilityalert(ui)
if abort or warn:
cca = scmutil.casecollisionauditor(ui, abort, repo.dirstate)
- for f in wctx.walk(match):
+
+ for f in wctx.walk(matchmod.badmatch(match, badfn)):
exact = match.exact(f)
if exact or not explicitonly and f not in wctx and repo.wvfs.lexists(f):
if cca: