mercurial/revset.py
changeset 24937 f5518b47cdd1
parent 24936 2aa94b6fe51c
child 24938 6db8074f9150
equal deleted inserted replaced
24936:2aa94b6fe51c 24937:f5518b47cdd1
    23     else:
    23     else:
    24         cut = None
    24         cut = None
    25     cl = repo.changelog
    25     cl = repo.changelog
    26 
    26 
    27     def iterate():
    27     def iterate():
    28         revqueue, revsnode = None, None
    28         revqueue, inputrev = None, None
    29         h = []
    29         h = []
    30 
    30 
    31         revs.sort(reverse=True)
    31         revs.sort(reverse=True)
    32         revqueue = util.deque(revs)
    32         revqueue = util.deque(revs)
    33         if revqueue:
    33         if revqueue:
    34             revsnode = revqueue.popleft()
    34             inputrev = revqueue.popleft()
    35             heapq.heappush(h, -revsnode)
    35             heapq.heappush(h, -inputrev)
    36 
    36 
    37         seen = set()
    37         seen = set()
    38         while h:
    38         while h:
    39             current = -heapq.heappop(h)
    39             current = -heapq.heappop(h)
    40             if current not in seen:
    40             if current not in seen:
    41                 if revsnode and current == revsnode:
    41                 if inputrev and current == inputrev:
    42                     if revqueue:
    42                     if revqueue:
    43                         revsnode = revqueue.popleft()
    43                         inputrev = revqueue.popleft()
    44                         heapq.heappush(h, -revsnode)
    44                         heapq.heappush(h, -inputrev)
    45                 seen.add(current)
    45                 seen.add(current)
    46                 yield current
    46                 yield current
    47                 for parent in cl.parentrevs(current)[:cut]:
    47                 for parent in cl.parentrevs(current)[:cut]:
    48                     if parent != node.nullrev:
    48                     if parent != node.nullrev:
    49                         heapq.heappush(h, -parent)
    49                         heapq.heappush(h, -parent)