diff hgext3rd/topic/revset.py @ 1910:24986e5a537c

stack: add a 'stack()' revset We give access to the list of relevant commit with a revset. Benefits over 'topic(.)' are the filtering of obsolete changeset and the reordering (to topological as-in unstability were resolved).
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 17 Mar 2016 09:13:12 -0700
parents 85390446f8c1
children 3d14e9eef3c1
line wrap: on
line diff
--- a/hgext3rd/topic/revset.py	Mon Mar 14 23:37:58 2016 +0000
+++ b/hgext3rd/topic/revset.py	Thu Mar 17 09:13:12 2016 -0700
@@ -1,7 +1,7 @@
 from mercurial import revset
 from mercurial import util
 
-from . import constants, destination
+from . import constants, destination, stack
 
 try:
     mkmatcher = revset._stringmatcher
@@ -45,6 +45,22 @@
         branch = repo['.'].branch()
     return subset & destination.ngtip(repo, branch)
 
+def stackset(repo, subset, x):
+    """`stack()`
+    All relevant changes in the current topic,
+
+    This is roughly equivalent to 'topic(.) - obsolete' with a sorting moving
+    unstable changeset after there future parent (as if evolve where already
+    run)."""
+    topic = repo.currenttopic
+    if not topic:
+        raise error.Abort(_('no active topic to list'))
+    # ordering hack, boo
+    return revset.baseset(stack.getstack(repo, topic)) & subset
+
+
+
 def modsetup():
     revset.symbols.update({'topic': topicset})
     revset.symbols.update({'ngtip': ngtipset})
+    revset.symbols.update({'stack': stackset})