--- a/mercurial/obsolete.py Wed Jun 12 11:29:11 2024 +0200
+++ b/mercurial/obsolete.py Tue Jun 11 18:47:50 2024 +0200
@@ -771,10 +771,11 @@
_addchildren(self.children, markers)
_checkinvalidmarkers(self.repo, markers)
- def relevantmarkers(self, nodes):
- """return a set of all obsolescence markers relevant to a set of nodes.
+ def relevantmarkers(self, nodes=None, revs=None):
+ """return a set of all obsolescence markers relevant to a set of
+ nodes or revisions.
- "relevant" to a set of nodes mean:
+ "relevant" to a set of nodes or revisions mean:
- marker that use this changeset as successor
- prune marker of direct children on this changeset
@@ -782,10 +783,24 @@
markers
It is a set so you cannot rely on order."""
+ if nodes is None:
+ nodes = set()
+ if revs is None:
+ revs = set()
- pendingnodes = set(nodes)
+ get_rev = self.repo.unfiltered().changelog.index.get_rev
+ pendingnodes = set()
+ for marker in self._all:
+ for node in (marker[0],) + marker[1] + (marker[5] or ()):
+ if node in nodes:
+ pendingnodes.add(node)
+ elif revs:
+ rev = get_rev(node)
+ if rev is not None and rev in revs:
+ pendingnodes.add(node)
seenmarkers = set()
- seennodes = set(pendingnodes)
+ seenmarkers = set()
+ seennodes = set()
precursorsmarkers = self.predecessors
succsmarkers = self.successors
children = self.children