mercurial/localrepo.py
changeset 32263 604d65e2c0b2
parent 32262 85ef5a073114
child 32264 a72caf0af38e
--- a/mercurial/localrepo.py	Tue May 02 18:45:51 2017 +0200
+++ b/mercurial/localrepo.py	Tue May 02 21:39:43 2017 +0200
@@ -1093,6 +1093,10 @@
                                **pycompat.strkwargs(hookargs))
             reporef()._afterlock(hook)
         tr.addfinalize('txnclose-hook', txnclosehook)
+        def warmscache(tr2):
+            repo = reporef()
+            repo.updatecaches(tr2)
+        tr.addpostclose('warms-cache', warmscache)
         def txnaborthook(tr2):
             """To be run if transaction is aborted
             """
@@ -1227,6 +1231,17 @@
         self.destroyed()
         return 0
 
+    @unfilteredmethod
+    def updatecaches(self, tr):
+        """warm appropriate caches after a transaction closed"""
+        if tr.hookargs.get('source') == 'strip':
+            # During strip, many caches are invalid but
+            # later call to `destroyed` will refresh them.
+            return
+
+        if tr.changes['revs']:
+            branchmap.updatecache(self.filtered('served'))
+
     def invalidatecaches(self):
 
         if '_tagscache' in vars(self):