comparison mercurial/scmutil.py @ 20551:efae655fd363

scmutil: changed revrange to return lazysets for new style revsets When there is an old style revset or both it will still return a baseset. This may be changed in later patches.
author Lucas Moscovicz <lmoscovicz@fb.com>
date Wed, 12 Feb 2014 15:30:27 -0800
parents 9ad6dae67845
children 165b117ffc1e
comparison
equal deleted inserted replaced
20550:1716a2671ec7 20551:efae655fd363
497 # attempt to parse old-style ranges first to deal with 497 # attempt to parse old-style ranges first to deal with
498 # things like old-tag which contain query metacharacters 498 # things like old-tag which contain query metacharacters
499 try: 499 try:
500 if isinstance(spec, int): 500 if isinstance(spec, int):
501 seen.add(spec) 501 seen.add(spec)
502 l.append(spec) 502 l = l + [spec]
503 continue 503 continue
504 504
505 if _revrangesep in spec: 505 if _revrangesep in spec:
506 start, end = spec.split(_revrangesep, 1) 506 start, end = spec.split(_revrangesep, 1)
507 start = revfix(repo, start, 0) 507 start = revfix(repo, start, 0)
518 if seen: 518 if seen:
519 newrevs.difference_update(seen) 519 newrevs.difference_update(seen)
520 seen.update(newrevs) 520 seen.update(newrevs)
521 else: 521 else:
522 seen = newrevs 522 seen = newrevs
523 l.extend(sorted(newrevs, reverse=start > end)) 523 l = l + sorted(newrevs, reverse=start > end)
524 continue 524 continue
525 elif spec and spec in repo: # single unquoted rev 525 elif spec and spec in repo: # single unquoted rev
526 rev = revfix(repo, spec, None) 526 rev = revfix(repo, spec, None)
527 if rev in seen: 527 if rev in seen:
528 continue 528 continue
532 except error.RepoLookupError: 532 except error.RepoLookupError:
533 pass 533 pass
534 534
535 # fall through to new-style queries if old-style fails 535 # fall through to new-style queries if old-style fails
536 m = revset.match(repo.ui, spec) 536 m = revset.match(repo.ui, spec)
537 dl = [r for r in m(repo, revset.spanset(repo)) if r not in seen] 537 if seen or l:
538 l.extend(dl) 538 dl = [r for r in m(repo, revset.spanset(repo)) if r not in seen]
539 seen.update(dl) 539 l = l + dl
540 540 seen.update(dl)
541 return revset.baseset(l) 541 else:
542 l = m(repo, revset.spanset(repo))
543
544 return l
542 545
543 def expandpats(pats): 546 def expandpats(pats):
544 if not util.expandglobs: 547 if not util.expandglobs:
545 return list(pats) 548 return list(pats)
546 ret = [] 549 ret = []