Mercurial > public > mercurial-scm > hg-stable
diff mercurial/cmdutil.py @ 37762:7269b87f817c
scmutil: teach the file prefetch hook to handle multiple commits
The remainder of the commands that need prefetch deal with multiple revisions.
I initially coded this as a separate hook, but then it needed a list of files
to handle `diff` and `grep`, so it didn't seem worth keeping them separate.
Not every matcher will emit bad file messages (some are built from a list of
files that are known to exist). But it seems better to filter this in one place
than to push this on either each caller or each hook implementation.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 14 Apr 2018 18:50:45 -0400 |
parents | e7bf5a73e4e1 |
children | b54404d66f7e |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Mon Apr 16 23:39:30 2018 -0400 +++ b/mercurial/cmdutil.py Sat Apr 14 18:50:45 2018 -0400 @@ -2292,16 +2292,15 @@ mfnode = ctx.manifestnode() try: if mfnode and mfl[mfnode].find(file)[0]: - scmutil.fileprefetchhooks(repo, ctx, [file]) + scmutil.prefetchfiles(repo, [ctx.rev()], matcher) write(file) return 0 except KeyError: pass - files = [f for f in ctx.walk(matcher)] - scmutil.fileprefetchhooks(repo, ctx, files) - - for abs in files: + scmutil.prefetchfiles(repo, [ctx.rev()], matcher) + + for abs in ctx.walk(matcher): write(abs) err = 0 @@ -2979,8 +2978,11 @@ _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata]) oplist = [actions[name][0] for name in needdata] - prefetch = scmutil.fileprefetchhooks - prefetch(repo, ctx, [f for sublist in oplist for f in sublist]) + prefetch = scmutil.prefetchfiles + matchfiles = scmutil.matchfiles + prefetch(repo, [ctx.rev()], + matchfiles(repo, + [f for sublist in oplist for f in sublist])) _performrevert(repo, parents, ctx, actions, interactive, tobackup) if targetsubs: