Mercurial > public > mercurial-scm > hg
comparison mercurial/localrepo.py @ 46372:3e91d9978bec
branchmap: update rev-branch-cache incrementally
Historically, the revision to branch mapping cache was updated on demand
and shared via bundle2 to avoid the cost of rebuilding on first use.
Use the new `register_changeset` callback and update rbc directly on
every change. Make the transfer of the bundle part redundant, but keep
it for the moment to avoid the test churn.
Over all, "hg unbundle" for large bundles is less than 1.8% slower for
different larger repositories and that seems to a reasonable trade off.
Differential Revision: https://phab.mercurial-scm.org/D9781
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Fri, 15 Jan 2021 01:58:59 +0100 |
parents | 0903d6b9b1df |
children | 95054317e172 |
comparison
equal
deleted
inserted
replaced
46371:0903d6b9b1df | 46372:3e91d9978bec |
---|---|
2061 if not self._revbranchcache: | 2061 if not self._revbranchcache: |
2062 self._revbranchcache = branchmap.revbranchcache(self.unfiltered()) | 2062 self._revbranchcache = branchmap.revbranchcache(self.unfiltered()) |
2063 return self._revbranchcache | 2063 return self._revbranchcache |
2064 | 2064 |
2065 def register_changeset(self, rev, changelogrevision): | 2065 def register_changeset(self, rev, changelogrevision): |
2066 pass | 2066 self.revbranchcache().setdata(rev, changelogrevision) |
2067 | 2067 |
2068 def branchtip(self, branch, ignoremissing=False): | 2068 def branchtip(self, branch, ignoremissing=False): |
2069 """return the tip node for a given branch | 2069 """return the tip node for a given branch |
2070 | 2070 |
2071 If ignoremissing is True, then this method will not raise an error. | 2071 If ignoremissing is True, then this method will not raise an error. |