hgext/obsolete.py
changeset 143 0599fb01dc41
parent 135 1a08daef8a53
child 144 f387658d6d22
--- a/hgext/obsolete.py	Thu Mar 08 12:21:01 2012 +0100
+++ b/hgext/obsolete.py	Thu Mar 08 13:56:27 2012 +0100
@@ -134,6 +134,24 @@
     args = revset.getargs(x, 0, 0, 'unstable takes no arguments')
     return [r for r in subset if r in repo._extinctset]
 
+
+def _obsparents(repo, narrow, s):
+    cs = set()
+    nm = repo.changelog.nodemap
+    for r in s:
+        for p in repo._obssubrels.get(repo[r].node(), ()):
+            pr = nm.get(p, None)
+            if pr is not None:
+                cs.add(pr)
+    return cs
+
+
+def revsetobsparents(repo, subset, x):
+    """obsolete parents of a changeset"""
+    s = revset.getset(repo, range(len(repo)), x)
+    cs = _obsparents(repo, subset, s)
+    return [r for r in subset if r in cs]
+
 ### Other Extension compat
 ############################
 
@@ -160,6 +178,7 @@
     revset.symbols["unstable"] = revsetunstable
     revset.symbols["suspended"] = revsetsuspended
     revset.symbols["extinct"] = revsetextinct
+    revset.symbols["obsparents"] = revsetobsparents
 
 
     try: