prev: jump to parent's successor if parent is obsolete and topic is involved
`hg stack` shows a linear chain of commits even when they are not linear chain
and some changesets are obsoleted and have successors as separate head. This is
very nice to have a post evolution view of the stack. However when `hg prev` is
run on an unstable changeset whose parent is obsolete and does not topic but
parents successor has the topic, it shows no parent on the topic.
This patch makes `hg prev` update to parent's successor and make things follow
the stack order.
--- a/CHANGELOG Thu Dec 28 03:08:22 2017 +0530
+++ b/CHANGELOG Thu Dec 28 03:12:54 2017 +0530
@@ -4,6 +4,8 @@
7.1.1 - in progress
-------------------
+ * fix `hg prev` behavior on obsolete changesets
+
topic (0.6.1)
* fix compatibility with Mercurial-4.3
--- a/hgext3rd/evolve/__init__.py Thu Dec 28 03:08:22 2017 +0530
+++ b/hgext3rd/evolve/__init__.py Thu Dec 28 03:12:54 2017 +0530
@@ -2036,6 +2036,8 @@
# we do not filter in the 1 case to allow prev to t0
if currenttopic and topic and _gettopicidx(p1) != 1:
+ parents = [repo[_singlesuccessor(repo, ctx)] if ctx.mutable() else ctx
+ for ctx in parents]
parents = [ctx for ctx in parents if ctx.topic() == currenttopic]
# issue message for the various case
--- a/tests/test-evolve-topic.t Thu Dec 28 03:08:22 2017 +0530
+++ b/tests/test-evolve-topic.t Thu Dec 28 03:12:54 2017 +0530
@@ -265,6 +265,5 @@
t0^ add eee (base)
$ hg prev
- no parent in topic "bar"
- (do you want --no-topic)
- [1]
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ [18] add fff