mercurial/revset.py
changeset 30803 d389f19f14aa
parent 30802 5eb3e4568c94
child 30804 4227f80f72b2
equal deleted inserted replaced
30802:5eb3e4568c94 30803:d389f19f14aa
   378 
   378 
   379     if not m or not n:
   379     if not m or not n:
   380         return baseset()
   380         return baseset()
   381     return _makerangeset(repo, subset, m.first(), n.last(), order)
   381     return _makerangeset(repo, subset, m.first(), n.last(), order)
   382 
   382 
       
   383 def rangeall(repo, subset, x, order):
       
   384     assert x is None
       
   385     return _makerangeset(repo, subset, 0, len(repo) - 1, order)
       
   386 
   383 def rangepre(repo, subset, y, order):
   387 def rangepre(repo, subset, y, order):
   384     # ':y' can't be rewritten to '0:y' since '0' may be hidden
   388     # ':y' can't be rewritten to '0:y' since '0' may be hidden
   385     n = getset(repo, fullreposet(repo), y)
   389     n = getset(repo, fullreposet(repo), y)
   386     if not n:
   390     if not n:
   387         return baseset()
   391         return baseset()
   388     return _makerangeset(repo, subset, 0, n.last(), order)
   392     return _makerangeset(repo, subset, 0, n.last(), order)
       
   393 
       
   394 def rangepost(repo, subset, x, order):
       
   395     m = getset(repo, fullreposet(repo), x)
       
   396     if not m:
       
   397         return baseset()
       
   398     return _makerangeset(repo, subset, m.first(), len(repo) - 1, order)
   389 
   399 
   390 def _makerangeset(repo, subset, m, n, order):
   400 def _makerangeset(repo, subset, m, n, order):
   391     if m == n:
   401     if m == n:
   392         r = baseset([m])
   402         r = baseset([m])
   393     elif n == node.wdirrev:
   403     elif n == node.wdirrev:
  2383     else:
  2393     else:
  2384         return _orderedhexlist(repo, subset, x)
  2394         return _orderedhexlist(repo, subset, x)
  2385 
  2395 
  2386 methods = {
  2396 methods = {
  2387     "range": rangeset,
  2397     "range": rangeset,
       
  2398     "rangeall": rangeall,
  2388     "rangepre": rangepre,
  2399     "rangepre": rangepre,
       
  2400     "rangepost": rangepost,
  2389     "dagrange": dagrange,
  2401     "dagrange": dagrange,
  2390     "string": stringset,
  2402     "string": stringset,
  2391     "symbol": stringset,
  2403     "symbol": stringset,
  2392     "and": andset,
  2404     "and": andset,
  2393     "or": orset,
  2405     "or": orset,
  2498         return _analyze(('func', ('symbol', 'only'), x[1]), order)
  2510         return _analyze(('func', ('symbol', 'only'), x[1]), order)
  2499     elif op == 'dagrangepre':
  2511     elif op == 'dagrangepre':
  2500         return _analyze(('func', ('symbol', 'ancestors'), x[1]), order)
  2512         return _analyze(('func', ('symbol', 'ancestors'), x[1]), order)
  2501     elif op == 'dagrangepost':
  2513     elif op == 'dagrangepost':
  2502         return _analyze(('func', ('symbol', 'descendants'), x[1]), order)
  2514         return _analyze(('func', ('symbol', 'descendants'), x[1]), order)
  2503     elif op == 'rangeall':
       
  2504         return _analyze(('rangepre', ('string', 'tip')), order)
       
  2505     elif op == 'rangepost':
       
  2506         return _analyze(('range', x[1], ('string', 'tip')), order)
       
  2507     elif op == 'negate':
  2515     elif op == 'negate':
  2508         s = getstring(x[1], _("can't negate that"))
  2516         s = getstring(x[1], _("can't negate that"))
  2509         return _analyze(('string', '-' + s), order)
  2517         return _analyze(('string', '-' + s), order)
  2510     elif op in ('string', 'symbol'):
  2518     elif op in ('string', 'symbol'):
  2511         return x
  2519         return x
  2515         return (op, ta, tb, order)
  2523         return (op, ta, tb, order)
  2516     elif op == 'or':
  2524     elif op == 'or':
  2517         return (op, _analyze(x[1], order), order)
  2525         return (op, _analyze(x[1], order), order)
  2518     elif op == 'not':
  2526     elif op == 'not':
  2519         return (op, _analyze(x[1], anyorder), order)
  2527         return (op, _analyze(x[1], anyorder), order)
  2520     elif op in ('rangepre', 'parentpost'):
  2528     elif op == 'rangeall':
       
  2529         return (op, None, order)
       
  2530     elif op in ('rangepre', 'rangepost', 'parentpost'):
  2521         return (op, _analyze(x[1], defineorder), order)
  2531         return (op, _analyze(x[1], defineorder), order)
  2522     elif op == 'group':
  2532     elif op == 'group':
  2523         return _analyze(x[1], order)
  2533         return _analyze(x[1], order)
  2524     elif op in ('dagrange', 'range', 'parent', 'ancestor'):
  2534     elif op in ('dagrange', 'range', 'parent', 'ancestor'):
  2525         ta = _analyze(x[1], defineorder)
  2535         ta = _analyze(x[1], defineorder)
  2620             return o[0], o[1]
  2630             return o[0], o[1]
  2621         else:
  2631         else:
  2622             o = _optimize(x[1], not small)
  2632             o = _optimize(x[1], not small)
  2623             order = x[2]
  2633             order = x[2]
  2624             return o[0], (op, o[1], order)
  2634             return o[0], (op, o[1], order)
  2625     elif op in ('rangepre', 'parentpost'):
  2635     elif op == 'rangeall':
       
  2636         return smallbonus, x
       
  2637     elif op in ('rangepre', 'rangepost', 'parentpost'):
  2626         o = _optimize(x[1], small)
  2638         o = _optimize(x[1], small)
  2627         order = x[2]
  2639         order = x[2]
  2628         return o[0], (op, o[1], order)
  2640         return o[0], (op, o[1], order)
  2629     elif op in ('dagrange', 'range', 'parent', 'ancestor'):
  2641     elif op in ('dagrange', 'range', 'parent', 'ancestor'):
  2630         wa, ta = _optimize(x[1], small)
  2642         wa, ta = _optimize(x[1], small)