##// END OF EJS Templates
scmutil: speed up revrange...
Bryan O'Sullivan -
r16390:4df76d55 default
parent child Browse files
Show More
@@ -534,6 +534,8 b' def revrange(repo, revs):'
534 534
535 535 seen, l = set(), []
536 536 for spec in revs:
537 if l and not seen:
538 seen = set(l)
537 539 # attempt to parse old-style ranges first to deal with
538 540 # things like old-tag which contain query metacharacters
539 541 try:
@@ -547,11 +549,18 b' def revrange(repo, revs):'
547 549 start = revfix(repo, start, 0)
548 550 end = revfix(repo, end, len(repo) - 1)
549 551 step = start > end and -1 or 1
550 for rev in xrange(start, end + step, step):
551 if rev in seen:
552 continue
553 seen.add(rev)
554 l.append(rev)
552 if not seen and not l:
553 # by far the most common case: revs = ["-1:0"]
554 l = range(start, end + step, step)
555 # defer syncing seen until next iteration
556 continue
557 newrevs = set(xrange(start, end + step, step))
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 564 continue
556 565 elif spec and spec in repo: # single unquoted rev
557 566 rev = revfix(repo, spec, None)
General Comments 0
You need to be logged in to leave comments. Login now