Show More
@@ -534,6 +534,8 b' def revrange(repo, revs):' | |||||
534 |
|
534 | |||
535 | seen, l = set(), [] |
|
535 | seen, l = set(), [] | |
536 | for spec in revs: |
|
536 | for spec in revs: | |
|
537 | if l and not seen: | |||
|
538 | seen = set(l) | |||
537 | # attempt to parse old-style ranges first to deal with |
|
539 | # attempt to parse old-style ranges first to deal with | |
538 | # things like old-tag which contain query metacharacters |
|
540 | # things like old-tag which contain query metacharacters | |
539 | try: |
|
541 | try: | |
@@ -547,11 +549,18 b' def revrange(repo, revs):' | |||||
547 | start = revfix(repo, start, 0) |
|
549 | start = revfix(repo, start, 0) | |
548 | end = revfix(repo, end, len(repo) - 1) |
|
550 | end = revfix(repo, end, len(repo) - 1) | |
549 | step = start > end and -1 or 1 |
|
551 | step = start > end and -1 or 1 | |
550 | for rev in xrange(start, end + step, step): |
|
552 | if not seen and not l: | |
551 | if rev in seen: |
|
553 | # by far the most common case: revs = ["-1:0"] | |
|
554 | l = range(start, end + step, step) | |||
|
555 | # defer syncing seen until next iteration | |||
552 |
|
|
556 | continue | |
553 | seen.add(rev) |
|
557 | newrevs = set(xrange(start, end + step, step)) | |
554 |
|
|
558 | if seen: | |
|
559 | newrevs.difference_update(seen) | |||
|
560 | seen.union(newrevs) | |||
|
561 | else: | |||
|
562 | seen = newrevs | |||
|
563 | l.extend(sorted(newrevs, reverse=start > end)) | |||
555 | continue |
|
564 | continue | |
556 | elif spec and spec in repo: # single unquoted rev |
|
565 | elif spec and spec in repo: # single unquoted rev | |
557 | rev = revfix(repo, spec, None) |
|
566 | rev = revfix(repo, spec, None) |
General Comments 0
You need to be logged in to leave comments.
Login now