Testing `hg stack` on complex cases when we have multiple successors because of
divergence, split etc.
$ . "$TESTDIR/testlib/topic_setup.sh"
Setup
$ cat << EOF >> $HGRCPATH
> [experimental]
> evolution = all
> [ui]
> interactive = True
> [defaults]
> split = -d "0 "0
> [extensions]
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
$ hg init test
$ cd test
$ echo foo > foo
$ hg add foo
$ hg ci -m "Added foo"
$ hg phase -r . --public
$ hg topic foo
marked working directory as topic: foo
$ echo a > a
$ echo b > b
$ hg ci -Aqm "Added a and b"
$ echo c > c
$ echo d > d
$ hg ci -Aqm "Added c and d"
$ echo e > e
$ echo f > f
$ hg ci -Aqm "Added e and f"
$ hg log -G
@ changeset: 3:f1d3649d6a8b
| tag: tip
| topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added e and f
|
o changeset: 2:8e8251e8193b
| topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added c and d
|
o changeset: 1:002b85930b9c
| topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added a and b
|
o changeset: 0:f3603c09ac10
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Added foo
Testing in case of split within the topic
$ hg stack
### topic: foo
### target: default (branch)
t3@ Added e and f (current)
t2: Added c and d
t1: Added a and b
t0^ Added foo (base)
$ hg prev
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
[2] Added c and d
$ echo 0 > num
$ cat > editor.sh << '__EOF__'
> NUM=$(cat num)
> NUM=`expr "$NUM" + 1`
> echo "$NUM" > num
> echo "split$NUM" > "$1"
> __EOF__
$ export HGEDITOR="\"sh\" \"editor.sh\""
$ hg split << EOF
> y
> y
> n
> y
> EOF
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding c
adding d
diff --git a/c b/c
new file mode 100644
examine changes to 'c'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+c
record change 1/2 to 'c'? [Ynesfdaq?] y
diff --git a/d b/d
new file mode 100644
examine changes to 'd'? [Ynesfdaq?] n
Done splitting? [yN] y
$ hg stack
### topic: foo
### target: default (branch)
t4$ Added e and f (unstable)
t3@ split2 (current)
t2: split1
t1: Added a and b
t0^ Added foo (base)
$ hg log -G
@ changeset: 5:5ccee6da565e
| tag: tip
| topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: split2
|
o changeset: 4:f26c1b9addde
| topic: foo
| parent: 1:002b85930b9c
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: split1
|
| o changeset: 3:f1d3649d6a8b
| | topic: foo
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | trouble: unstable
| | summary: Added e and f
| |
| x changeset: 2:8e8251e8193b
|/ topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added c and d
|
o changeset: 1:002b85930b9c
| topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added a and b
|
o changeset: 0:f3603c09ac10
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Added foo
$ hg prev
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
[4] split1
$ echo foo > c
$ hg diff
diff -r f26c1b9addde c
--- a/c Thu Jan 01 00:00:00 1970 +0000
+++ b/c * (glob)
@@ -1,1 +1,1 @@
-c
+foo
$ hg amend
1 new unstable changesets
$ hg log -G
@ changeset: 7:7d9445714d83
| tag: tip
| topic: foo
| parent: 1:002b85930b9c
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: split1
|
| o changeset: 5:5ccee6da565e
| | topic: foo
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | trouble: unstable
| | summary: split2
| |
| x changeset: 4:f26c1b9addde
|/ topic: foo
| parent: 1:002b85930b9c
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: split1
|
| o changeset: 3:f1d3649d6a8b
| | topic: foo
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | trouble: unstable
| | summary: Added e and f
| |
| x changeset: 2:8e8251e8193b
|/ topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added c and d
|
o changeset: 1:002b85930b9c
| topic: foo
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added a and b
|
o changeset: 0:f3603c09ac10
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Added foo
$ hg stack
### topic: foo (2 heads)
### target: default (branch), 2 behind
t4$ Added e and f (unstable)
t3$ split2 (unstable)
t2@ split1 (current)
t1: Added a and b
t0^ Added foo (base)