# HG changeset patch # User Durham Goode # Date 1443461256 25200 # Node ID 1f0e78f8f55fc2a490ce6686be40ad49b279148f # Parent 70abba798098340318e27d28bf7d084094d4bf43 bundlerepo: let bundle repo look in the _mancache When looking up a base revision, we were ignoring the contents that were already available in the manifest's _mancache. This patch allows us to use that data instead of reading from the revlog. This is useful in our pushrebase extension (which allows rebasing on the server side during a push) because it allows us to prefetch the bundle base manifest before aquiring the repo lock (1 second saving), which means doing less work inside the lock, which means a 20% higher commit rate. diff -r 70abba798098 -r 1f0e78f8f55f mercurial/bundlerepo.py --- a/mercurial/bundlerepo.py Sun Sep 27 22:19:54 2015 +0900 +++ b/mercurial/bundlerepo.py Mon Sep 28 10:27:36 2015 -0700 @@ -195,7 +195,15 @@ linkmapper) def baserevision(self, nodeorrev): - return manifest.manifest.revision(self, nodeorrev) + node = nodeorrev + if isinstance(node, int): + node = self.node(node) + + if node in self._mancache: + result = self._mancache[node][0].text() + else: + result = manifest.manifest.revision(self, nodeorrev) + return result class bundlefilelog(bundlerevlog, filelog.filelog): def __init__(self, opener, path, bundle, linkmapper):