mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
revlog: choose best delta for parentdelta (issue2466)
When parentdelta is enabled, we choose the delta that has the minimum distance to its base. Otherwise, base may be sufficiently far away to require a full version, resulting in greatly reduced compression.
This commit is contained in:
parent
d0eecfc8e5
commit
90141f6021
@ -1194,15 +1194,14 @@ class revlog(object):
|
||||
d = None
|
||||
p1r, p2r = self.rev(p1), self.rev(p2)
|
||||
|
||||
if self._parentdelta:
|
||||
deltarev, deltanode = p1r, p1
|
||||
flags = REVIDX_PARENTDELTA
|
||||
else:
|
||||
deltarev, deltanode = prev, self.node(prev)
|
||||
|
||||
# should we try to build a delta?
|
||||
if deltarev != nullrev:
|
||||
d = builddelta(deltarev)
|
||||
if prev != nullrev:
|
||||
d = builddelta(prev)
|
||||
if self._parentdelta and prev != p1r:
|
||||
d2 = builddelta(p1r)
|
||||
if d2 < d:
|
||||
d = d2
|
||||
flags = REVIDX_PARENTDELTA
|
||||
dist, l, data, base = d
|
||||
|
||||
# full versions are inserted when the needed deltas
|
||||
|
Loading…
Reference in New Issue
Block a user