--- a/hgext3rd/evolve/evolvecmd.py Thu Oct 25 16:33:10 2018 +0200
+++ b/hgext3rd/evolve/evolvecmd.py Thu Oct 25 18:32:54 2018 +0200
@@ -1583,15 +1583,13 @@
# check if revs to be evolved are in active topic to make sure that we
# can use stack aliases s# in evolve msgs.
activetopic = getattr(repo, 'currenttopic', '')
- rev = revs[0]
- revtopic = getattr(repo[rev], 'topic', '')
- if revtopic:
- revtopic = revtopic()
- stacktmplt = False
- if activetopic and revtopic and (activetopic == revtopic):
- stacktmplt = True
for rev in revs:
curctx = repo[rev]
+ revtopic = getattr(curctx, 'topic', lambda: '')()
+ topicidx = getattr(curctx, 'topicidx', lambda: None)()
+ stacktmplt = False
+ if activetopic and (activetopic == revtopic) and topicidx is not None:
+ stacktmplt = True
progresscb()
ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt,
confirmopt, progresscb, targetcat,
--- a/hgext3rd/evolve/utility.py Thu Oct 25 16:33:10 2018 +0200
+++ b/hgext3rd/evolve/utility.py Thu Oct 25 18:32:54 2018 +0200
@@ -14,7 +14,7 @@
from mercurial.node import nullrev
shorttemplate = "[{label('evolve.rev', rev)}] {desc|firstline}\n"
-stacktemplate = "[s{label('evolve.rev', topicidx)}] {desc|firstline}\n"
+stacktemplate = """[{label('evolve.rev', if(topicidx, "s{topicidx}", rev))}] {desc|firstline}\n"""
def obsexcmsg(ui, message, important=False):
verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange',
--- a/tests/test-topic-stack-complex.t Thu Oct 25 16:33:10 2018 +0200
+++ b/tests/test-topic-stack-complex.t Thu Oct 25 18:32:54 2018 +0200
@@ -169,7 +169,7 @@
$ hg evolve --content-divergent -r ec94a1ed1330
merge:[s5] Added e and f
with: [s4] Added e and f
- base: [s] Added e and f
+ base: [3] Added e and f
updating to "local" side of the conflict: ec94a1ed1330
merging "other" divergent changeset 'f2eff98490d2'
0 files updated, 0 files merged, 0 files removed, 0 files unresolved