[PATCH 2 of 4] delta: filter nullrev out first

Yuya Nishihara yuya at tcha.org
Fri Dec 14 20:52:48 EST 2018


On Fri, 14 Dec 2018 21:24:36 +0000, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1544089145 -3600
> #      Thu Dec 06 10:39:05 2018 +0100
> # Node ID 2ae099bc17b55791398ebc00d38fb4f988a1e2e3
> # Parent  db0227d6f9291d9dac23f6f07699cf1fb7d1ea3d
> # EXP-Topic sparse-revlog-corner-cases
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 2ae099bc17b5
> 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

Maybe we can remove nullrev from the initial tested set.


More information about the Mercurial-devel mailing list