mercurial/obsolete.py
changeset 22274 10e87c67f1c7
parent 22273 e6d01239f779
child 22309 a65697c3f20e
--- a/mercurial/obsolete.py	Wed Aug 20 18:11:23 2014 -0700
+++ b/mercurial/obsolete.py	Tue Aug 19 23:22:44 2014 -0700
@@ -494,11 +494,25 @@
     finally:
         lock.release()
 
-def getmarkers(repo):
-    """returns markers known in a repository"""
-    for markerdata in repo.obsstore:
+def getmarkers(repo, nodes=None):
+    """returns markers known in a repository
+
+    If <nodes> is specified, only markers "relevant" to those nodes are are
+    returned"""
+    if nodes is None:
+        rawmarkers = repo.obsstore
+    else:
+        rawmarkers = repo.obsstore.relevantmarkers(nodes)
+
+    for markerdata in rawmarkers:
         yield marker(repo, markerdata)
 
+def relevantmarkers(repo, node):
+    """all obsolete markers relevant to some revision"""
+    for markerdata in repo.obsstore.relevantmarkers(node):
+        yield marker(repo, markerdata)
+
+
 def precursormarkers(ctx):
     """obsolete marker marking this changeset as a successors"""
     for data in ctx._repo.obsstore.precursors.get(ctx.node(), ()):