changeset 1896:4ae421cbb07c

stack: exclude obsolete changeset from the set We care about relevant changeset, obsolete have a new version somewhere and we don't care about the old one in our display. In case of unstability, the ordering used is still wrong.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Mon, 14 Mar 2016 17:48:31 +0000
parents c8e4c6e03957
children 38570c53b1cf
files src/topic/stack.py tests/test-topic-stack.t
diffstat 2 files changed, 32 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/topic/stack.py	Mon Mar 14 17:37:39 2016 +0000
+++ b/src/topic/stack.py	Mon Mar 14 17:48:31 2016 +0000
@@ -6,9 +6,8 @@
 from mercurial import error
 
 def _getstack(repo, topic):
-    # XXX need to exclude obsolete changesets
     # XXX need sorting
-    return repo.revs("topic(%s)", topic)
+    return repo.revs("topic(%s) - obsolete()", topic)
 
 def showstack(ui, repo, topic):
     if not topic:
--- a/tests/test-topic-stack.t	Mon Mar 14 17:37:39 2016 +0000
+++ b/tests/test-topic-stack.t	Mon Mar 14 17:48:31 2016 +0000
@@ -6,6 +6,8 @@
   $ cat << EOF >> $HGRCPATH
   > [ui]
   > logtemplate = {rev} {branch} \{{get(namespaces, "topics")}} {phase} {desc|firstline}\n
+  > [experimental]
+  > evolution=createmarkers,exchange,allowunstable
   > EOF
 
 (new head warning seems buggy)
@@ -66,3 +68,32 @@
   $ hg topic --list
   abort: no active topic to list
   [255]
+
+Case with some of the topic unstable
+------------------------------------
+
+  $ hg up 'desc(c_d)'
+  switching to topic foo
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo bbb > ddd
+  $ hg commit --amend
+  $ hg log -G
+  @  7 default {foo} draft c_d
+  |
+  | o  5 default {foo} draft c_f
+  | |
+  | o  4 default {foo} draft c_e
+  | |
+  | x  3 default {foo} draft c_d
+  |/
+  o  2 default {foo} draft c_c
+  |
+  o  1 default {} draft c_b
+  |
+  o  0 default {} draft c_a
+  
+  $ hg topic --list
+  c_c
+  c_e
+  c_f
+  c_d