Mercurial > public > mercurial-scm > hg
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 = [] |