Mercurial > hg
changeset 36137:f52a9336ac5f
cmdutil: convert the prefetchfiles() hook to a callback mechanism (API)
Yuya suggested a list of callbacks instead of function wrapping. This means
that one extension can't block another from processing the list.
.. api::
File prefetching is now handled by registering a callback with
scmutil.fileprefetchhooks.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 11 Feb 2018 00:23:57 -0500 |
parents | 6767e7ce2c31 |
children | a991fcc48222 |
files | mercurial/cmdutil.py mercurial/scmutil.py |
diffstat | 2 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Tue Feb 13 00:54:36 2018 -0500 +++ b/mercurial/cmdutil.py Sun Feb 11 00:23:57 2018 -0500 @@ -2865,8 +2865,9 @@ if not opts.get('dry_run'): needdata = ('revert', 'add', 'undelete') if _revertprefetch is not _revertprefetchstub: - ui.deprecwarn("'cmdutil._revertprefetch' is deprecated, use " - "'cmdutil._prefetchfiles'", '4.6', stacklevel=1) + ui.deprecwarn("'cmdutil._revertprefetch' is deprecated, " + "add a callback to 'scmutil.fileprefetchhooks'", + '4.6', stacklevel=1) _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata]) oplist = [actions[name][0] for name in needdata] @@ -2893,6 +2894,7 @@ def _prefetchfiles(repo, ctx, files): """Let extensions changing the storage layer prefetch content for any non merge based command.""" + scmutil.fileprefetchhooks(repo, ctx, files) def _performrevert(repo, parents, ctx, actions, interactive=False, tobackup=None):
--- a/mercurial/scmutil.py Tue Feb 13 00:54:36 2018 -0500 +++ b/mercurial/scmutil.py Sun Feb 11 00:23:57 2018 -0500 @@ -1222,6 +1222,11 @@ 'unbundle', ] +# a list of (repo, ctx, files) functions called by various commands to allow +# extensions to ensure the corresponding files are available locally, before the +# command uses them. +fileprefetchhooks = util.hooks() + # A marker that tells the evolve extension to suppress its own reporting _reportstroubledchangesets = True