# HG changeset patch
# User Boris Feld <boris.f...@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 
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

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

diff --git a/mercurial/revsetlang.py b/mercurial/revsetlang.py
--- a/mercurial/revsetlang.py
+++ b/mercurial/revsetlang.py
@@ -96,7 +96,7 @@ def tokenize(program, lookup=None, symin
         # attempt to parse old-style ranges first to deal with
         # things like old-tag which contain query metacharacters
         parts = program.split(':', 1)
-        if all(lookup(sym) for sym in parts if sym):
+        if all((sym.strip() == sym and lookup(sym)) for sym in parts if sym):
             if parts[0]:
                 yield ('symbol', parts[0], 0)
             if len(parts) > 1:
Mercurial-devel mailing list

Reply via email to