equal
deleted
inserted
replaced
676 # Turn heads into a dictionary so we can remove 'fake' heads. |
676 # Turn heads into a dictionary so we can remove 'fake' heads. |
677 # Also, later we will be using it to filter out the heads we can't |
677 # Also, later we will be using it to filter out the heads we can't |
678 # find from roots. |
678 # find from roots. |
679 heads = dict.fromkeys(heads, 0) |
679 heads = dict.fromkeys(heads, 0) |
680 # Start at the top and keep marking parents until we're done. |
680 # Start at the top and keep marking parents until we're done. |
681 nodestotag = heads.keys() |
681 nodestotag = set(heads.keys()) |
682 # Remember where the top was so we can use it as a limit later. |
682 # Remember where the top was so we can use it as a limit later. |
683 highestrev = max([self.rev(n) for n in nodestotag]) |
683 highestrev = max([self.rev(n) for n in nodestotag]) |
684 while nodestotag: |
684 while nodestotag: |
685 # grab a node to tag |
685 # grab a node to tag |
686 n = nodestotag.pop() |
686 n = nodestotag.pop() |
694 if n not in ancestors: |
694 if n not in ancestors: |
695 # If we are possibly a descendent of one of the roots |
695 # If we are possibly a descendent of one of the roots |
696 # and we haven't already been marked as an ancestor |
696 # and we haven't already been marked as an ancestor |
697 ancestors[n] = 1 # Mark as ancestor |
697 ancestors[n] = 1 # Mark as ancestor |
698 # Add non-nullid parents to list of nodes to tag. |
698 # Add non-nullid parents to list of nodes to tag. |
699 nodestotag.extend([p for p in self.parents(n) if |
699 nodestotag.update([p for p in self.parents(n) if |
700 p != nullid]) |
700 p != nullid]) |
701 elif n in heads: # We've seen it before, is it a fake head? |
701 elif n in heads: # We've seen it before, is it a fake head? |
702 # So it is, real heads should not be the ancestors of |
702 # So it is, real heads should not be the ancestors of |
703 # any other heads. |
703 # any other heads. |
704 heads.pop(n) |
704 heads.pop(n) |