Mercurial > hg
changeset 41580:9f11759fc5f5
largefiles: use wrappedfunction() for match() override in overridecopy()
This reduced the time that the override is in place, but I that it's
correct this way (only for the duration of the orig() call).
Differential Revision: https://phab.mercurial-scm.org/D5867
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 05 Feb 2019 14:42:13 -0800 |
parents | 028bb170e74d |
children | d9fd2f74d683 |
files | hgext/largefiles/overrides.py |
diffstat | 1 files changed, 4 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py Tue Feb 05 14:29:37 2019 -0800 +++ b/hgext/largefiles/overrides.py Tue Feb 05 14:42:13 2019 -0800 @@ -652,7 +652,7 @@ wlock = repo.wlock() manifest = repo[None].manifest() - def overridematch(ctx, pats=(), opts=None, globbed=False, + def overridematch(orig, ctx, pats=(), opts=None, globbed=False, default='relpath', badfn=None): if opts is None: opts = {} @@ -664,7 +664,7 @@ newpats.append(pat.replace(lfutil.shortname, '')) else: newpats.append(pat) - match = oldmatch(ctx, newpats, opts, globbed, default, badfn=badfn) + match = orig(ctx, newpats, opts, globbed, default, badfn=badfn) m = copy.copy(match) lfile = lambda f: lfutil.standin(f) in manifest m._files = [lfutil.standin(f) for f in m._files if lfile(f)] @@ -678,7 +678,6 @@ None) m.matchfn = matchfn return m - oldmatch = installmatchfn(overridematch) listpats = [] for pat in pats: if matchmod.patkind(pat) is not None: @@ -696,7 +695,8 @@ _('destination largefile already exists')) copiedfiles.append((src, dest)) orig(src, dest, *args, **kwargs) - with extensions.wrappedfunction(util, 'copyfile', overridecopyfile): + with extensions.wrappedfunction(util, 'copyfile', overridecopyfile), \ + extensions.wrappedfunction(scmutil, 'match', overridematch): result += orig(ui, repo, listpats, opts, rename) lfdirstate = lfutil.openlfdirstate(ui, repo) @@ -727,7 +727,6 @@ else: nolfiles = True finally: - restorematchfn() wlock.release() if nolfiles and nonormalfiles: