[PATCH 1 of 6 V2] cmdutil: convert the prefetchfiles() hook to a callback mechanism (API)
Matt Harbison
mharbison72 at gmail.com
Mon Feb 12 03:58:03 UTC 2018
# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1518326637 18000
# Sun Feb 11 00:23:57 2018 -0500
# Node ID 94345c2ef212a84746e581755b5ccc2cd2e44eac
# Parent 488e313954eaccaefb1c24bb4332258453ab8e18
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
cmdutil.fileprefetchhooks.
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -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 'cmdutil.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."""
+ fileprefetchhooks(repo, ctx, files)
def _performrevert(repo, parents, ctx, actions, interactive=False,
tobackup=None):
@@ -3055,6 +3057,11 @@
# - (desturl, destbranch, destpeer, outgoing)
summaryremotehooks = util.hooks()
+# 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 list of state files kept by multistep operations like graft.
# Since graft cannot be aborted, it is considered 'clearable' by update.
# note: bisect is intentionally excluded
More information about the Mercurial-devel
mailing list