D5636: branchmap: updating triggers a write
mjpieters (Martijn Pieters)
phabricator at mercurial-scm.org
Mon Jan 21 18:08:18 UTC 2019
mjpieters created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Rather than separate updating and writing, create a subclass that doesn't write
on update. This minimises chances we forget to write out updates somewhere.
This also makes refactoring and improving the branchmap functionality easier.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5636
AFFECTED FILES
mercurial/branchmap.py
mercurial/discovery.py
CHANGE DETAILS
diff --git a/mercurial/discovery.py b/mercurial/discovery.py
--- a/mercurial/discovery.py
+++ b/mercurial/discovery.py
@@ -238,7 +238,7 @@
# D. Update newmap with outgoing changes.
# This will possibly add new heads and remove existing ones.
- newmap = branchmap.branchcache((branch, heads[1])
+ newmap = branchmap.remotebranchcache((branch, heads[1])
for branch, heads in headssum.iteritems()
if heads[0] is not None)
newmap.update(repo, (ctx.rev() for ctx in missingctx))
diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py
--- a/mercurial/branchmap.py
+++ b/mercurial/branchmap.py
@@ -63,7 +63,6 @@
revs.extend(cl.revs(start=bcache.tiprev + 1))
if revs:
bcache.update(repo, revs)
- bcache.write(repo)
assert bcache.validfor(repo), filtername
repo._branchcaches[repo.filtername] = bcache
@@ -242,8 +241,9 @@
def copy(self):
"""return an deep copy of the branchcache object"""
- return branchcache(self, self.tipnode, self.tiprev, self.filteredhash,
- self._closednodes)
+ return type(self)(
+ self, self.tipnode, self.tiprev, self.filteredhash,
+ self._closednodes)
def write(self, repo):
try:
@@ -332,6 +332,15 @@
repo.ui.log('branchcache', 'updated %s branch cache in %.4f seconds\n',
repo.filtername, duration)
+ self.write(repo)
+
+
+class remotebranchcache(branchcache):
+ """Branchmap info for a remote connection, should not write locally"""
+ def write(self, repo):
+ pass
+
+
# Revision branch info cache
_rbcversion = '-v1'
To: mjpieters, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list