769 _addpredecessors(self.predecessors, markers) |
769 _addpredecessors(self.predecessors, markers) |
770 if self._cached('children'): |
770 if self._cached('children'): |
771 _addchildren(self.children, markers) |
771 _addchildren(self.children, markers) |
772 _checkinvalidmarkers(self.repo, markers) |
772 _checkinvalidmarkers(self.repo, markers) |
773 |
773 |
774 def relevantmarkers(self, nodes=None, revs=None): |
774 def relevantmarkers(self, nodes): |
775 """return a set of all obsolescence markers relevant to a set of |
775 """return a set of all obsolescence markers relevant to a set of nodes. |
776 nodes or revisions. |
776 |
777 |
777 "relevant" to a set of nodes mean: |
778 "relevant" to a set of nodes or revisions mean: |
|
779 |
778 |
780 - marker that use this changeset as successor |
779 - marker that use this changeset as successor |
781 - prune marker of direct children on this changeset |
780 - prune marker of direct children on this changeset |
782 - recursive application of the two rules on predecessors of these |
781 - recursive application of the two rules on predecessors of these |
783 markers |
782 markers |
784 |
783 |
785 It is a set so you cannot rely on order.""" |
784 It is a set so you cannot rely on order.""" |
786 if nodes is None: |
785 |
787 nodes = set() |
786 pendingnodes = set(nodes) |
788 if revs is None: |
|
789 revs = set() |
|
790 |
|
791 get_rev = self.repo.unfiltered().changelog.index.get_rev |
|
792 pendingnodes = set() |
|
793 for marker in self._all: |
|
794 for node in (marker[0],) + marker[1] + (marker[5] or ()): |
|
795 if node in nodes: |
|
796 pendingnodes.add(node) |
|
797 elif revs: |
|
798 rev = get_rev(node) |
|
799 if rev is not None and rev in revs: |
|
800 pendingnodes.add(node) |
|
801 seenmarkers = set() |
787 seenmarkers = set() |
802 seenmarkers = set() |
788 seennodes = set(pendingnodes) |
803 seennodes = set() |
|
804 precursorsmarkers = self.predecessors |
789 precursorsmarkers = self.predecessors |
805 succsmarkers = self.successors |
790 succsmarkers = self.successors |
806 children = self.children |
791 children = self.children |
807 while pendingnodes: |
792 while pendingnodes: |
808 direct = set() |
793 direct = set() |