# HG changeset patch # User Matt Harbison # Date 2014-11-22 03:24:45 # Node ID b5e3f3d25395ded693930b2c9a09b4c1c21b6d5e # Parent 3778884197f048402f79836788ba9aaf31338972 largefiles: split the creation of a normal matcher out of its install method Refactoring addremove to support subrepos will need the ability to keep passing the same matcher and narrowing it, instead of monkey patching scmutil's matcher. diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -22,20 +22,23 @@ import basestore # -- Utility functions: commonly/repeatedly needed functionality --------------- +def composenormalfilematcher(match, manifest): + m = copy.copy(match) + notlfile = lambda f: not (lfutil.isstandin(f) or lfutil.standin(f) in + manifest) + m._files = filter(notlfile, m._files) + m._fmap = set(m._files) + m._always = False + origmatchfn = m.matchfn + m.matchfn = lambda f: notlfile(f) and origmatchfn(f) + return m + def installnormalfilesmatchfn(manifest): '''installmatchfn with a matchfn that ignores all largefiles''' def overridematch(ctx, pats=[], opts={}, globbed=False, default='relpath'): match = oldmatch(ctx, pats, opts, globbed, default) - m = copy.copy(match) - notlfile = lambda f: not (lfutil.isstandin(f) or lfutil.standin(f) in - manifest) - m._files = filter(notlfile, m._files) - m._fmap = set(m._files) - m._always = False - origmatchfn = m.matchfn - m.matchfn = lambda f: notlfile(f) and origmatchfn(f) - return m + return composenormalfilematcher(match, manifest) oldmatch = installmatchfn(overridematch) def installmatchfn(f):