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 _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel