diff mercurial/obsolete.py @ 22274:10e87c67f1c7

debugobsolete: add a --rev argument This argument can be used to list markers relevant to a set of revisions. We add a test for this option and the relevant computation in the same move.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 19 Aug 2014 23:22:44 -0700
parents e6d01239f779
children a65697c3f20e
line wrap: on
line diff
--- 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(), ()):