Mercurial > hg
changeset 41582:7b2580e0dbbd
largefiles: use wrappedfunction() in overriderevert()
Differential Revision: https://phab.mercurial-scm.org/D5869
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 05 Feb 2019 11:17:11 -0800 |
parents | d9fd2f74d683 |
children | a4cd77a425a3 |
files | hgext/largefiles/overrides.py |
diffstat | 1 files changed, 3 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py Tue Feb 05 14:25:11 2019 -0800 +++ b/hgext/largefiles/overrides.py Tue Feb 05 11:17:11 2019 -0800 @@ -78,22 +78,6 @@ m.matchfn = lambda f: notlfile(f) and origmatchfn(f) return m -def installmatchfn(f): - '''monkey patch the scmutil module with a custom match function. - Warning: it is monkey patching the _module_ on runtime! Not thread safe!''' - oldmatch = scmutil.match - setattr(f, 'oldmatch', oldmatch) - scmutil.match = f - return oldmatch - -def restorematchfn(): - '''restores scmutil.match to what it was before installmatchfn - was called. no-op if scmutil.match is its original function. - - Note that n calls to installmatchfn will require n calls to - restore the original matchfn.''' - scmutil.match = getattr(scmutil.match, 'oldmatch') - def addlargefiles(ui, repo, isaddremove, matcher, **opts): large = opts.get(r'large') lfsize = lfutil.getminsize( @@ -756,11 +740,11 @@ oldstandins = lfutil.getstandinsstate(repo) - def overridematch(mctx, pats=(), opts=None, globbed=False, + def overridematch(orig, mctx, pats=(), opts=None, globbed=False, default='relpath', badfn=None): if opts is None: opts = {} - match = oldmatch(mctx, pats, opts, globbed, default, badfn=badfn) + match = orig(mctx, pats, opts, globbed, default, badfn=badfn) m = copy.copy(match) # revert supports recursing into subrepos, and though largefiles @@ -791,11 +775,8 @@ return origmatchfn(f) m.matchfn = matchfn return m - oldmatch = installmatchfn(overridematch) - try: + with extensions.wrappedfunction(scmutil, 'match', overridematch): orig(ui, repo, ctx, parents, *pats, **opts) - finally: - restorematchfn() newstandins = lfutil.getstandinsstate(repo) filelist = lfutil.getlfilestoupdate(oldstandins, newstandins)