##// 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 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"]
552 continue
554 l = range(start, end + step, step)
553 seen.add(rev)
555 # defer syncing seen until next iteration
554 l.append(rev)
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 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