diff --git a/hgext3rd/perftweaks.py b/hgext3rd/perftweaks.py --- a/hgext3rd/perftweaks.py +++ b/hgext3rd/perftweaks.py @@ -79,6 +79,19 @@ if repo.local() is not None: _preloadrevs(repo) + class perftweaksrepo(repo.__class__): + @localrepo.unfilteredmethod + def updatecaches(self, tr=None): + # Disable "branchmap.updatecache(self.filtered('served'))" + # code path guarded by "if tr.changes['revs']". First, we + # don't have on-disk branchmap. Second, accessing + # "repo.filtered('served')" alone is not very cheap. + if tr and 'revs' in tr.changes: + tr.changes['revs'] = () + super(perftweaksrepo, self).updatecaches(tr) + + repo.__class__ = perftweaksrepo + def _singlenode(orig, self, repo, name): """Skips reading branches namespace if unnecessary""" if repo.ui.configbool('tweakdefaults', 'allowbranch', True):