equal
deleted
inserted
replaced
595 for p in self.parentrevs(r): |
595 for p in self.parentrevs(r): |
596 if p not in has: |
596 if p not in has: |
597 visit.append(p) |
597 visit.append(p) |
598 missing = list(missing) |
598 missing = list(missing) |
599 missing.sort() |
599 missing.sort() |
600 return has, [self.node(r) for r in missing] |
600 return has, [self.node(miss) for miss in missing] |
601 |
601 |
602 def incrementalmissingrevs(self, common=None): |
602 def incrementalmissingrevs(self, common=None): |
603 """Return an object that can be used to incrementally compute the |
603 """Return an object that can be used to incrementally compute the |
604 revision numbers of the ancestors of arbitrary sets that are not |
604 revision numbers of the ancestors of arbitrary sets that are not |
605 ancestors of common. This is an ancestor.incrementalmissingancestors |
605 ancestors of common. This is an ancestor.incrementalmissingancestors |
747 if lowestrev > nullrev: |
747 if lowestrev > nullrev: |
748 # But, since we weren't, let's recompute the lowest rev to not |
748 # But, since we weren't, let's recompute the lowest rev to not |
749 # include roots that aren't ancestors. |
749 # include roots that aren't ancestors. |
750 |
750 |
751 # Filter out roots that aren't ancestors of heads |
751 # Filter out roots that aren't ancestors of heads |
752 roots = [n for n in roots if n in ancestors] |
752 roots = [root for root in roots if root in ancestors] |
753 # Recompute the lowest revision |
753 # Recompute the lowest revision |
754 if roots: |
754 if roots: |
755 lowestrev = min([self.rev(n) for n in roots]) |
755 lowestrev = min([self.rev(root) for root in roots]) |
756 else: |
756 else: |
757 # No more roots? Return empty list |
757 # No more roots? Return empty list |
758 return nonodes |
758 return nonodes |
759 else: |
759 else: |
760 # We are descending from nullid, and don't need to care about |
760 # We are descending from nullid, and don't need to care about |
809 # will eventually remove it. |
809 # will eventually remove it. |
810 heads[n] = True |
810 heads[n] = True |
811 # But, obviously its parents aren't. |
811 # But, obviously its parents aren't. |
812 for p in self.parents(n): |
812 for p in self.parents(n): |
813 heads.pop(p, None) |
813 heads.pop(p, None) |
814 heads = [n for n, flag in heads.iteritems() if flag] |
814 heads = [head for head, flag in heads.iteritems() if flag] |
815 roots = list(roots) |
815 roots = list(roots) |
816 assert orderedout |
816 assert orderedout |
817 assert roots |
817 assert roots |
818 assert heads |
818 assert heads |
819 return (orderedout, roots, heads) |
819 return (orderedout, roots, heads) |
961 except (TypeError, LookupError): |
961 except (TypeError, LookupError): |
962 pass |
962 pass |
963 |
963 |
964 def _partialmatch(self, id): |
964 def _partialmatch(self, id): |
965 try: |
965 try: |
966 n = self.index.partialmatch(id) |
966 partial = self.index.partialmatch(id) |
967 if n and self.hasnode(n): |
967 if partial and self.hasnode(partial): |
968 return n |
968 return partial |
969 return None |
969 return None |
970 except RevlogError: |
970 except RevlogError: |
971 # parsers.c radix tree lookup gave multiple matches |
971 # parsers.c radix tree lookup gave multiple matches |
972 # fast path: for unfiltered changelog, radix tree is accurate |
972 # fast path: for unfiltered changelog, radix tree is accurate |
973 if not getattr(self, 'filteredrevs', None): |
973 if not getattr(self, 'filteredrevs', None): |