tests/test-topic-stack-complex.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 21 Mar 2018 16:35:18 +0100
branchmercurial-4.1
changeset 3593 b92114f201c9
parent 3592 7a5c3175015e
parent 3420 b21a3753255f
permissions -rw-r--r--
test-compat: merge mercurial-4.2 into mercurial-4.1

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)