# HG changeset patch # User Boris Feld # Date 2018-01-18 13:21:05 # Node ID 95f4f1bfb6500c09b2ea62d8f03463510653eec9 # Parent 586891c561dcff4ec87690f8dfdbd599881a2f0f revbranchcache: add a public function to update the data We want to exchange more cached data over the wire. To do so, we need a clean way to update the cache on the receiving ends. diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py --- a/mercurial/branchmap.py +++ b/mercurial/branchmap.py @@ -454,6 +454,26 @@ class revbranchcache(object): self._setcachedata(rev, reponode, branchidx) return b, close + def setdata(self, branch, rev, node, close): + """add new data information to the cache""" + if branch in self._namesreverse: + branchidx = self._namesreverse[branch] + else: + branchidx = len(self._names) + self._names.append(branch) + self._namesreverse[branch] = branchidx + if close: + branchidx |= _rbccloseflag + self._setcachedata(rev, node, branchidx) + # If no cache data were readable (non exists, bad permission, etc) + # the cache was bypassing itself by setting: + # + # self.branchinfo = self._branchinfo + # + # Since we now have data in the cache, we need to drop this bypassing. + if 'branchinfo' in vars(self): + del self.branchinfo + def _setcachedata(self, rev, node, branchidx): """Writes the node's branch data to the in-memory cache data.""" if rev == nullrev: