[PATCH 2 of 2 V2] revset: skip old style lookup if external whitespace are detected

Yuya Nishihara yuya at tcha.org
Tue Feb 13 06:47:21 EST 2018


On Mon, 12 Feb 2018 18:00:52 +0100, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1518448909 -3600
> #      Mon Feb 12 16:21:49 2018 +0100
> # Node ID b0f45e1376e2d0f32023e197c51802bc21c60490
> # Parent  f02fd7ca256d044c4a51c3f3fc0ecaf95d23e03d
> # EXP-Topic noname
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r b0f45e1376e2
> revset: skip old style lookup if external whitespace are detected
> 
> Since label cannot contains leading or trailing whitespace we can skip looking
> for them. This is useful in repository with slow labels (eg: special type of
> tags). Short command running on a specific revision can benefit from such
> shortcut.
> 
> eg on a repository where loading tags take 0.4s:
> 
> 1: hg log --template '{node}\n' --rev 'rev(0)'
>    0.560 seconds
> 
> 2: hg log --template '{node}\n' --rev ' rev(0)'
>    0.109 seconds

Seems okay, but isn't it too obscure that prefixing with ' ' is the fast
way of querying?

Instead, maybe we can make lookup() to not search slow labels assuming these
labeling schemes didn't exist in pre-revset era. Alternatively, we could add
a config knob to switch off the old-style range support.


More information about the Mercurial-devel mailing list