Patchwork [1,of,5,V2] revert: add a way for external extensions to prefetch file data

mail settings
Submitter Pierre-Yves David
Date Sept. 8, 2014, 2:58 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/5715/
State Accepted
Headers show


Pierre-Yves David - Sept. 8, 2014, 2:58 p.m.
# HG changeset patch
# User Pierre-Yves David <>
# Date 1409359679 -7200
#      Sat Aug 30 02:47:59 2014 +0200
# Node ID cd3e613dc2e306ab5ac2486d67ca5bfb87225147
# Parent  5c153c69fdb28ff5b1bf6578e5f07c50bf25833c
revert: add a way for external extensions to prefetch file data

This will let extensions that mess with the storage layer (remotefilelog,
largefile) to prefetch any data that will be accessed during the revert

We are currently fetching more data that theoretically required because the
backup code is a bit stupid. Future patches will improve that.


diff --git a/mercurial/ b/mercurial/
--- a/mercurial/
+++ b/mercurial/
@@ -2525,10 +2525,13 @@  def revert(ui, repo, ctx, parents, *pats
             (dsremoved,  actions['undelete'], backup),
             (clean,      actions['noop'],     discard),
             (unknown,    actions['unknown'],  discard),
+        needdata = ('revert', 'add', 'remove', 'undelete')
+        _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata])
         for abs, (rel, exact) in sorted(names.items()):
             # target file to be touch on disk (relative to cwd)
             target = repo.wjoin(abs)
             # search the entry in the dispatch table.
             # if the file is in any of these sets, it was touched in the working
@@ -2562,10 +2565,14 @@  def revert(ui, repo, ctx, parents, *pats
                 for sub in targetsubs:
                     ctx.sub(sub).revert(ui, ctx.substate[sub], *pats, **opts)
+def _revertprefetch(repo, ctx, *files):
+    """Let extension changing the storage layer prefetch content"""
+    pass
 def _performrevert(repo, parents, ctx, actions):
     """function that actually perform all the actions computed for revert
     This is an independent function to let extension to plug in and react to
     the imminent revert.