diff -r 85ef5a073114 -r 604d65e2c0b2 mercurial/localrepo.py --- 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):