tests/test-evolve-phase-divergence.t
changeset 4497 711668818508
parent 4495 48e9169633ef
child 4498 99dbe605fda5
--- a/tests/test-evolve-phase-divergence.t	Wed Apr 10 20:24:55 2019 +0200
+++ b/tests/test-evolve-phase-divergence.t	Wed Apr 10 20:43:42 2019 +0200
@@ -1403,3 +1403,416 @@
 XXX: we should handle phase-divergent merges
   $ hg evolve --phase-divergent
   skipping 8d4acf488ab5 : we do not handle merge yet
+
+Check we preserve "cancelation" of changes
+==========================================
+
+This tests case where the phase divergence changesets cancelled some of the
+change made by the public predecessors. The cancellation of these changes need
+to be preserved.
+
+  $ hg init cancelled-changes
+  $ cd cancelled-changes
+  $ cat << EOF > numbers
+  > 1
+  > 2
+  > 3
+  > 4
+  > 5
+  > 6
+  > 7
+  > 8
+  > 9
+  > EOF
+  $ cat << EOF > letters
+  > a
+  > b
+  > c
+  > d
+  > e
+  > f
+  > g
+  > h
+  > i
+  > EOF
+  $ cat << EOF > romans
+  > I
+  > II
+  > III
+  > IV
+  > V
+  > VI
+  > VII
+  > VIII
+  > IX
+  > EOF
+  $ hg add numbers letters romans
+  $ hg commit -m root
+  $ cat << EOF > numbers
+  > 1
+  > 2
+  > 3
+  > four
+  > 5
+  > 6
+  > 7
+  > 8
+  > nine
+  > EOF
+  $ cat << EOF > letters
+  > a
+  > b
+  > c
+  > D
+  > e
+  > f
+  > g
+  > h
+  > i
+  > EOF
+  $ hg commit -m E1
+  $ cat << EOF > numbers
+  > 1
+  > 2
+  > 3
+  > 4
+  > 5
+  > 6
+  > seven
+  > 8
+  > nine
+  > EOF
+  $ cat << EOF > letters
+  > a
+  > b
+  > c
+  > d
+  > e
+  > f
+  > g
+  > h
+  > i
+  > EOF
+  $ cat << EOF > romans
+  > I
+  > ii
+  > III
+  > IV
+  > V
+  > VI
+  > VII
+  > VIII
+  > IX
+  > EOF
+  $ hg commit --amend -m E2
+  $ hg --hidden phase --public --rev 'desc(E1)'
+  1 new phase-divergent changesets
+  $ hg log -G --patch --hidden --rev 'not desc("root")'
+  @  changeset:   2:599454370881
+  |  tag:         tip
+  ~  parent:      0:6d1fdf6de7e2
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     instability: phase-divergent
+     summary:     E2
+  
+     diff -r 6d1fdf6de7e2 -r 599454370881 numbers
+     --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+     @@ -4,6 +4,6 @@
+      4
+      5
+      6
+     -7
+     +seven
+      8
+     -9
+     +nine
+     diff -r 6d1fdf6de7e2 -r 599454370881 romans
+     --- a/romans	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/romans	Thu Jan 01 00:00:00 1970 +0000
+     @@ -1,5 +1,5 @@
+      I
+     -II
+     +ii
+      III
+      IV
+      V
+  
+  o  changeset:   1:3074c7249d20
+  |  user:        test
+  ~  date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     E1
+  
+     diff -r 6d1fdf6de7e2 -r 3074c7249d20 letters
+     --- a/letters	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/letters	Thu Jan 01 00:00:00 1970 +0000
+     @@ -1,7 +1,7 @@
+      a
+      b
+      c
+     -d
+     +D
+      e
+      f
+      g
+     diff -r 6d1fdf6de7e2 -r 3074c7249d20 numbers
+     --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+     @@ -1,9 +1,9 @@
+      1
+      2
+      3
+     -4
+     +four
+      5
+      6
+      7
+      8
+     -9
+     +nine
+  
+  $ hg evolve --list
+  599454370881: E2
+    phase-divergent: 3074c7249d20 (immutable precursor)
+  
+  $ hg obslog --all --patch
+  @  599454370881 (2) E2
+  |
+  o  3074c7249d20 (1) E1
+       rewritten(description, content) as 599454370881 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 3074c7249d20 -r 599454370881 changeset-description
+         --- a/changeset-description
+         +++ b/changeset-description
+         @@ -1,1 +1,1 @@
+         -E1
+         +E2
+  
+         diff -r 3074c7249d20 -r 599454370881 letters
+         --- a/letters	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/letters	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,7 +1,7 @@
+          a
+          b
+          c
+         -D
+         +d
+          e
+          f
+          g
+         diff -r 3074c7249d20 -r 599454370881 numbers
+         --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,9 +1,9 @@
+          1
+          2
+          3
+         -four
+         +4
+          5
+          6
+         -7
+         +seven
+          8
+          nine
+         diff -r 3074c7249d20 -r 599454370881 romans
+         --- a/romans	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/romans	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,5 +1,5 @@
+          I
+         -II
+         +ii
+          III
+          IV
+          V
+  
+  
+
+  $ hg evolve --phase-divergent --rev 'desc("E2")'
+  recreate:[2] E2
+  atop:[1] E1
+  committed as 9eebcb77a7e2
+  working directory is now at 9eebcb77a7e2
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 9eebcb77a7e2b240cb7dce095bbe608b5de91cc8
+  # Parent  3074c7249d2023b1fff891591d7e609695cd09c2
+  phase-divergent update to 3074c7249d20:
+  
+  E2
+  
+  diff -r 3074c7249d20 -r 9eebcb77a7e2 letters
+  --- a/letters	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/letters	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,7 +1,7 @@
+   a
+   b
+   c
+  -D
+  +d
+   e
+   f
+   g
+  diff -r 3074c7249d20 -r 9eebcb77a7e2 numbers
+  --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,9 +1,9 @@
+   1
+   2
+   3
+  -four
+  +4
+   5
+   6
+  -7
+  +seven
+   8
+   nine
+  diff -r 3074c7249d20 -r 9eebcb77a7e2 romans
+  --- a/romans	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/romans	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,5 +1,5 @@
+   I
+  -II
+  +ii
+   III
+   IV
+   V
+  $ hg log -G --patch --rev 'not desc("root")'
+  @  changeset:   3:9eebcb77a7e2
+  |  tag:         tip
+  |  parent:      1:3074c7249d20
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     phase-divergent update to 3074c7249d20:
+  |
+  |  diff -r 3074c7249d20 -r 9eebcb77a7e2 letters
+  |  --- a/letters	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/letters	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -1,7 +1,7 @@
+  |   a
+  |   b
+  |   c
+  |  -D
+  |  +d
+  |   e
+  |   f
+  |   g
+  |  diff -r 3074c7249d20 -r 9eebcb77a7e2 numbers
+  |  --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -1,9 +1,9 @@
+  |   1
+  |   2
+  |   3
+  |  -four
+  |  +4
+  |   5
+  |   6
+  |  -7
+  |  +seven
+  |   8
+  |   nine
+  |  diff -r 3074c7249d20 -r 9eebcb77a7e2 romans
+  |  --- a/romans	Thu Jan 01 00:00:00 1970 +0000
+  |  +++ b/romans	Thu Jan 01 00:00:00 1970 +0000
+  |  @@ -1,5 +1,5 @@
+  |   I
+  |  -II
+  |  +ii
+  |   III
+  |   IV
+  |   V
+  |
+  o  changeset:   1:3074c7249d20
+  |  user:        test
+  ~  date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     E1
+  
+     diff -r 6d1fdf6de7e2 -r 3074c7249d20 letters
+     --- a/letters	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/letters	Thu Jan 01 00:00:00 1970 +0000
+     @@ -1,7 +1,7 @@
+      a
+      b
+      c
+     -d
+     +D
+      e
+      f
+      g
+     diff -r 6d1fdf6de7e2 -r 3074c7249d20 numbers
+     --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+     +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+     @@ -1,9 +1,9 @@
+      1
+      2
+      3
+     -4
+     +four
+      5
+      6
+      7
+      8
+     -9
+     +nine
+  
+  $ hg obslog --patch
+  @  9eebcb77a7e2 (3) phase-divergent update to 3074c7249d20:
+  |
+  x  599454370881 (2) E2
+  |    rewritten(description, parent, content) as 9eebcb77a7e2 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+  |      (No patch available, changesets rebased)
+  |
+  o  3074c7249d20 (1) E1
+       rewritten(description, content) as 599454370881 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 3074c7249d20 -r 599454370881 changeset-description
+         --- a/changeset-description
+         +++ b/changeset-description
+         @@ -1,1 +1,1 @@
+         -E1
+         +E2
+  
+         diff -r 3074c7249d20 -r 599454370881 letters
+         --- a/letters	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/letters	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,7 +1,7 @@
+          a
+          b
+          c
+         -D
+         +d
+          e
+          f
+          g
+         diff -r 3074c7249d20 -r 599454370881 numbers
+         --- a/numbers	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/numbers	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,9 +1,9 @@
+          1
+          2
+          3
+         -four
+         +4
+          5
+          6
+         -7
+         +seven
+          8
+          nine
+         diff -r 3074c7249d20 -r 599454370881 romans
+         --- a/romans	Thu Jan 01 00:00:00 1970 +0000
+         +++ b/romans	Thu Jan 01 00:00:00 1970 +0000
+         @@ -1,5 +1,5 @@
+          I
+         -II
+         +ii
+          III
+          IV
+          V
+  
+  
+  $ cd ..