Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlog.py @ 39871:e23c03dc5cf9
revlog: drop emitrevisiondeltas() and associated functionality (API)
emitrevisions() is the future!
Differential Revision: https://phab.mercurial-scm.org/D4726
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 24 Sep 2018 09:59:19 -0700 |
parents | 5a9ab91e0a45 |
children | 14e500b58263 |
line wrap: on
line diff
--- a/mercurial/revlog.py Fri Sep 21 18:47:04 2018 -0700 +++ b/mercurial/revlog.py Mon Sep 24 09:59:19 2018 -0700 @@ -2294,87 +2294,6 @@ res.append(self.datafile) return res - def emitrevisiondeltas(self, requests): - frev = self.rev - - prevrev = None - for request in requests: - node = request.node - rev = frev(node) - - if prevrev is None: - prevrev = self.index[rev][5] - - # Requesting a full revision. - if request.basenode == nullid: - baserev = nullrev - # Requesting an explicit revision. - elif request.basenode is not None: - baserev = frev(request.basenode) - # Allowing us to choose. - else: - p1rev, p2rev = self.parentrevs(rev) - deltaparentrev = self.deltaparent(rev) - - # Avoid sending full revisions when delta parent is null. Pick - # prev in that case. It's tempting to pick p1 in this case, as - # p1 will be smaller in the common case. However, computing a - # delta against p1 may require resolving the raw text of p1, - # which could be expensive. The revlog caches should have prev - # cached, meaning less CPU for delta generation. There is - # likely room to add a flag and/or config option to control this - # behavior. - if deltaparentrev == nullrev and self._storedeltachains: - baserev = prevrev - - # Revlog is configured to use full snapshot for a reason. - # Stick to full snapshot. - elif deltaparentrev == nullrev: - baserev = nullrev - - # Pick previous when we can't be sure the base is available - # on consumer. - elif deltaparentrev not in (p1rev, p2rev, prevrev): - baserev = prevrev - else: - baserev = deltaparentrev - - if baserev != nullrev and not self.candelta(baserev, rev): - baserev = nullrev - - revision = None - delta = None - baserevisionsize = None - - if self.iscensored(baserev) or self.iscensored(rev): - try: - revision = self.revision(node, raw=True) - except error.CensoredNodeError as e: - revision = e.tombstone - - if baserev != nullrev: - baserevisionsize = self.rawsize(baserev) - - elif baserev == nullrev: - revision = self.revision(node, raw=True) - else: - delta = self.revdiff(baserev, rev) - - extraflags = REVIDX_ELLIPSIS if request.ellipsis else 0 - - yield revlogrevisiondelta( - node=node, - p1node=request.p1node, - p2node=request.p2node, - linknode=request.linknode, - basenode=self.node(baserev), - flags=self.flags(rev) | extraflags, - baserevisionsize=baserevisionsize, - revision=revision, - delta=delta) - - prevrev = rev - def emitrevisions(self, nodes, nodesorder=None, revisiondata=False, assumehaveparentrevisions=False, deltaprevious=False): if nodesorder not in ('nodes', 'storage', None):