# HG changeset patch # User Boris Feld # Date 2018-12-06 09:39:05 # Node ID f960c51eebf32499f9f8c592b25f1a272a280e5a # Parent 74ee5ff1e81c46ec2acb513eedba5a6742b5f055 delta: filter nullrev out first When picking a potential candidate, we filter them on various criteria. The "different from nullrev" criteria is very fast to compute and we should process it first. diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py --- a/mercurial/revlogutils/deltas.py +++ b/mercurial/revlogutils/deltas.py @@ -633,6 +633,10 @@ def _candidategroups(revlog, textlen, p1 or deltalength(rev))): tested.add(rev) rev = deltaparent(rev) + # no need to try a delta against nullrev, this will be done as a + # last resort. + if rev == nullrev: + continue # filter out revision we tested already if rev in tested: continue @@ -640,10 +644,6 @@ def _candidategroups(revlog, textlen, p1 # filter out delta base that will never produce good delta if deltas_limit < revlog.length(rev): continue - # no need to try a delta against nullrev, this will be done as a - # last resort. - if rev == nullrev: - continue # no delta for rawtext-changing revs (see "candelta" for why) if revlog.flags(rev) & REVIDX_RAWTEXT_CHANGING_FLAGS: continue