Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 29898:7203400f91b0
revset: do not partial-match operator and function names in optimize()
It was error-prone, and actually there was a typo, s/ancestorspec/ancestor/.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 07 Aug 2016 16:36:08 +0900 |
parents | 90a1886a203b |
children | e4b4168a4f1c |
comparison
equal
deleted
inserted
replaced
29897:90a1886a203b | 29898:7203400f91b0 |
---|---|
2369 elif op == 'rangepost': | 2369 elif op == 'rangepost': |
2370 return _optimize(('range', x[1], ('string', 'tip')), small) | 2370 return _optimize(('range', x[1], ('string', 'tip')), small) |
2371 elif op == 'negate': | 2371 elif op == 'negate': |
2372 s = getstring(x[1], _("can't negate that")) | 2372 s = getstring(x[1], _("can't negate that")) |
2373 return _optimize(('string', '-' + s), small) | 2373 return _optimize(('string', '-' + s), small) |
2374 elif op in 'string symbol': | 2374 elif op in ('string', 'symbol'): |
2375 return smallbonus, x # single revisions are small | 2375 return smallbonus, x # single revisions are small |
2376 elif op == 'and': | 2376 elif op == 'and': |
2377 wa, ta = _optimize(x[1], True) | 2377 wa, ta = _optimize(x[1], True) |
2378 wb, tb = _optimize(x[2], True) | 2378 wb, tb = _optimize(x[2], True) |
2379 w = min(wa, wb) | 2379 w = min(wa, wb) |
2432 elif op == 'parentpost': | 2432 elif op == 'parentpost': |
2433 o = _optimize(x[1], small) | 2433 o = _optimize(x[1], small) |
2434 return o[0], (op, o[1]) | 2434 return o[0], (op, o[1]) |
2435 elif op == 'group': | 2435 elif op == 'group': |
2436 return _optimize(x[1], small) | 2436 return _optimize(x[1], small) |
2437 elif op in 'dagrange range parent ancestorspec': | 2437 elif op in ('dagrange', 'range', 'parent', 'ancestor'): |
2438 wa, ta = _optimize(x[1], small) | 2438 wa, ta = _optimize(x[1], small) |
2439 wb, tb = _optimize(x[2], small) | 2439 wb, tb = _optimize(x[2], small) |
2440 return wa + wb, (op, ta, tb) | 2440 return wa + wb, (op, ta, tb) |
2441 elif op == 'list': | 2441 elif op == 'list': |
2442 ws, ts = zip(*(_optimize(y, small) for y in x[1:])) | 2442 ws, ts = zip(*(_optimize(y, small) for y in x[1:])) |
2445 w, t = _optimize(x[2], small) | 2445 w, t = _optimize(x[2], small) |
2446 return w, (op, x[1], t) | 2446 return w, (op, x[1], t) |
2447 elif op == 'func': | 2447 elif op == 'func': |
2448 f = getsymbol(x[1]) | 2448 f = getsymbol(x[1]) |
2449 wa, ta = _optimize(x[2], small) | 2449 wa, ta = _optimize(x[2], small) |
2450 if f in ("author branch closed date desc file grep keyword " | 2450 if f in ('author', 'branch', 'closed', 'date', 'desc', 'file', 'grep', |
2451 "outgoing user"): | 2451 'keyword', 'outgoing', 'user'): |
2452 w = 10 # slow | 2452 w = 10 # slow |
2453 elif f in "modifies adds removes": | 2453 elif f in ('modifies', 'adds', 'removes'): |
2454 w = 30 # slower | 2454 w = 30 # slower |
2455 elif f == "contains": | 2455 elif f == "contains": |
2456 w = 100 # very slow | 2456 w = 100 # very slow |
2457 elif f == "ancestor": | 2457 elif f == "ancestor": |
2458 w = 1 * smallbonus | 2458 w = 1 * smallbonus |
2459 elif f in "reverse limit first _intlist": | 2459 elif f in ('reverse', 'limit', 'first', '_intlist'): |
2460 w = 0 | 2460 w = 0 |
2461 elif f in "sort": | 2461 elif f == "sort": |
2462 w = 10 # assume most sorts look at changelog | 2462 w = 10 # assume most sorts look at changelog |
2463 else: | 2463 else: |
2464 w = 1 | 2464 w = 1 |
2465 return w + wa, (op, x[1], ta) | 2465 return w + wa, (op, x[1], ta) |
2466 raise ValueError('invalid operator %r' % op) | 2466 raise ValueError('invalid operator %r' % op) |