[PATCH 07 of 10] deltas: accept and skip None return for delta info

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Jun 13 13:23:02 UTC 2019


# HG changeset patch
# User Valentin Gatien-Baron <vgatien-baron at janestreet.com>
# Date 1548106650 -3600
#      Mon Jan 21 22:37:30 2019 +0100
# Node ID e8b1d87ef22cbfbdcb825d3539b9889cbb8a1245
# Parent  ea4affeead3ac4635ef23d351791c483bc9b462d
# EXP-Topic delta-extra
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r e8b1d87ef22c
deltas: accept and skip None return for delta info

They are some extra computation that will shortcut the delta compression if the
delta seems hopeless, returning None.

diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py
--- a/mercurial/revlogutils/deltas.py
+++ b/mercurial/revlogutils/deltas.py
@@ -1025,8 +1025,9 @@ class deltacomputer(object):
                 nominateddeltas.append(deltainfo)
             for candidaterev in candidaterevs:
                 candidatedelta = self._builddeltainfo(revinfo, candidaterev, fh)
-                if isgooddeltainfo(self.revlog, candidatedelta, revinfo):
-                    nominateddeltas.append(candidatedelta)
+                if candidatedelta is not None:
+                    if isgooddeltainfo(self.revlog, candidatedelta, revinfo):
+                        nominateddeltas.append(candidatedelta)
             if nominateddeltas:
                 deltainfo = min(nominateddeltas, key=lambda x: x.deltalen)
             if deltainfo is not None:



More information about the Mercurial-devel mailing list