tests/test-evolve-content-divergent-basic.t
branchstable
changeset 4507 de9089514833
parent 4493 32446b7a6e7c
child 4513 d70db7e455dc
child 4578 75e76141cba2
--- a/tests/test-evolve-content-divergent-basic.t	Wed Apr 10 16:11:59 2019 +0200
+++ b/tests/test-evolve-content-divergent-basic.t	Thu Apr 11 22:13:55 2019 +0200
@@ -43,6 +43,21 @@
   $ hg ci -Aqm "added a"
   $ echo b > b
   $ hg ci -Aqm "added b"
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 5f6d8a4bf34ab274ccc9f631c2536964b8a3666d
+  # Parent  9092f1db7931481f93b37d5c9fbcfc341bcd7318
+  added b
+  
+  diff --git a/b b/b
+  new file mode 100644
+  --- /dev/null
+  +++ b/b
+  @@ -0,0 +1,1 @@
+  +b
 
   $ hg up .^
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -50,6 +65,21 @@
   $ hg ci -Am "divergent"
   adding bdivergent1
   created new head
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 593c57f2117e33dd0884382f02789d948f548557
+  # Parent  9092f1db7931481f93b37d5c9fbcfc341bcd7318
+  divergent
+  
+  diff --git a/bdivergent1 b/bdivergent1
+  new file mode 100644
+  --- /dev/null
+  +++ b/bdivergent1
+  @@ -0,0 +1,1 @@
+  +bdivergent
 
   $ hg up .^
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -57,6 +87,21 @@
   $ hg ci -Am "divergent"
   adding bdivergent2
   created new head
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 8374d2ddc3a4d48428c3d2f80e4fc86f13736f96
+  # Parent  9092f1db7931481f93b37d5c9fbcfc341bcd7318
+  divergent
+  
+  diff --git a/bdivergent2 b/bdivergent2
+  new file mode 100644
+  --- /dev/null
+  +++ b/bdivergent2
+  @@ -0,0 +1,1 @@
+  +bdivergent
 
   $ hg prune -s 8374d2ddc3a4 "desc('added b')"
   1 changesets pruned
@@ -64,12 +109,30 @@
   1 changesets pruned
   2 new content-divergent changesets
 
-  $ hg log -G
+  $ hg log -G --patch
   @  3:8374d2ddc3a4@default(draft) divergent [content-divergent]
+  |  diff --git a/bdivergent2 b/bdivergent2
+  |  new file mode 100644
+  |  --- /dev/null
+  |  +++ b/bdivergent2
+  |  @@ -0,0 +1,1 @@
+  |  +bdivergent
   |
   | *  2:593c57f2117e@default(draft) divergent [content-divergent]
-  |/
+  |/   diff --git a/bdivergent1 b/bdivergent1
+  |    new file mode 100644
+  |    --- /dev/null
+  |    +++ b/bdivergent1
+  |    @@ -0,0 +1,1 @@
+  |    +bdivergent
+  |
   o  0:9092f1db7931@default(draft) added a []
+     diff --git a/a b/a
+     new file mode 100644
+     --- /dev/null
+     +++ b/a
+     @@ -0,0 +1,1 @@
+     +a
   
 
   $ hg evolve --all --any --content-divergent
@@ -85,6 +148,27 @@
   |
   o  0:9092f1db7931@default(draft) added a []
   
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 45bf1312f45468b76158b33f8426e6530c8b35b1
+  # Parent  9092f1db7931481f93b37d5c9fbcfc341bcd7318
+  divergent
+  
+  diff --git a/bdivergent1 b/bdivergent1
+  new file mode 100644
+  --- /dev/null
+  +++ b/bdivergent1
+  @@ -0,0 +1,1 @@
+  +bdivergent
+  diff --git a/bdivergent2 b/bdivergent2
+  new file mode 100644
+  --- /dev/null
+  +++ b/bdivergent2
+  @@ -0,0 +1,1 @@
+  +bdivergent
 
   $ cd ..
 
@@ -368,8 +452,9 @@
 
   $ cd ..
 
-Stabilize divergent changesets with same parent
-===============================================
+Stabilize content-divergent changesets with same parent
+=======================================================
+
 
   $ glog() {
   >   hg log -G --template \
@@ -487,8 +572,9 @@
   +conflict
   +babar
 
-Check conflict during divergence resolution
--------------------------------------------------
+Check conflict during content-divergence resolution
+---------------------------------------------------
+
 
   $ hg up --hidden 'min(desc("More addition"))'
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -499,7 +585,9 @@
   $ echo 'gotta break' >> a
   $ hg amend
   2 new content-divergent changesets
+
 # reamend so that the case is not the first precursor.
+
   $ hg amend -m "More addition (2)"
   $ hg phase 'contentdivergent()'
   4: draft
@@ -576,3 +664,469 @@
   +conflict
   +babar
   $ cd ..
+
+Check case where one side undo some of the common predecessors change
+---------------------------------------------------------------------
+
+The goal is to make sure we merge using the right base.
+
+  $ hg init predecessors-as-merge-base
+  $ cd predecessors-as-merge-base
+  $ 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
+  > 9
+  > 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
+  > 9
+  > EOF
+  $ cat << EOF > romans
+  > I
+  > II
+  > III
+  > IV
+  > V
+  > vi
+  > VII
+  > VIII
+  > IX
+  > EOF
+  $ hg commit --amend -m E2
+  $ hg --hidden update -r 'desc(E1)'
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 4a250e5bd992
+  (hidden revision '4a250e5bd992' was rewritten as: 084ae625fa51)
+  working directory parent is obsolete! (4a250e5bd992)
+  (use 'hg evolve' to update to its successor: 084ae625fa51)
+  $ cat << EOF > numbers
+  > one
+  > 2
+  > 3
+  > four
+  > 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 commit --amend -m E3
+  2 new content-divergent changesets
+  $ hg log -G --patch --hidden
+  @  3:19ed1bf64a2c@default(draft) E3 [content-divergent]
+  |  diff --git a/numbers b/numbers
+  |  --- a/numbers
+  |  +++ b/numbers
+  |  @@ -1,1 +1,1 @@
+  |  -1
+  |  +one
+  |  @@ -4,1 +4,1 @@
+  |  -4
+  |  +four
+  |  diff --git a/romans b/romans
+  |  --- a/romans
+  |  +++ b/romans
+  |  @@ -2,1 +2,1 @@
+  |  -II
+  |  +ii
+  |
+  | *  2:084ae625fa51@default(draft) E2 [content-divergent]
+  |/   diff --git a/letters b/letters
+  |    --- a/letters
+  |    +++ b/letters
+  |    @@ -4,1 +4,1 @@
+  |    -d
+  |    +D
+  |    diff --git a/numbers b/numbers
+  |    --- a/numbers
+  |    +++ b/numbers
+  |    @@ -7,1 +7,1 @@
+  |    -7
+  |    +seven
+  |    diff --git a/romans b/romans
+  |    --- a/romans
+  |    +++ b/romans
+  |    @@ -6,1 +6,1 @@
+  |    -VI
+  |    +vi
+  |
+  | x  1:4a250e5bd992@default(draft) E1 []
+  |/   diff --git a/letters b/letters
+  |    --- a/letters
+  |    +++ b/letters
+  |    @@ -4,1 +4,1 @@
+  |    -d
+  |    +D
+  |    diff --git a/numbers b/numbers
+  |    --- a/numbers
+  |    +++ b/numbers
+  |    @@ -4,1 +4,1 @@
+  |    -4
+  |    +four
+  |
+  o  0:6d1fdf6de7e2@default(draft) root []
+     diff --git a/letters b/letters
+     new file mode 100644
+     --- /dev/null
+     +++ b/letters
+     @@ -0,0 +1,9 @@
+     +a
+     +b
+     +c
+     +d
+     +e
+     +f
+     +g
+     +h
+     +i
+     diff --git a/numbers b/numbers
+     new file mode 100644
+     --- /dev/null
+     +++ b/numbers
+     @@ -0,0 +1,9 @@
+     +1
+     +2
+     +3
+     +4
+     +5
+     +6
+     +7
+     +8
+     +9
+     diff --git a/romans b/romans
+     new file mode 100644
+     --- /dev/null
+     +++ b/romans
+     @@ -0,0 +1,9 @@
+     +I
+     +II
+     +III
+     +IV
+     +V
+     +VI
+     +VII
+     +VIII
+     +IX
+  
+  $ hg evolve --list
+  084ae625fa51: E2
+    content-divergent: 19ed1bf64a2c (draft) (precursor 4a250e5bd992)
+  
+  19ed1bf64a2c: E3
+    content-divergent: 084ae625fa51 (draft) (precursor 4a250e5bd992)
+  
+  $ hg obslog --all --patch
+  *  084ae625fa51 (2) E2
+  |
+  | @  19ed1bf64a2c (3) E3
+  |/
+  x  4a250e5bd992 (1) E1
+       rewritten(description, content) as 084ae625fa51 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 4a250e5bd992 -r 084ae625fa51 changeset-description
+         --- a/changeset-description
+         +++ b/changeset-description
+         @@ -1,1 +1,1 @@
+         -E1
+         +E2
+  
+         diff --git a/numbers b/numbers
+         --- a/numbers
+         +++ b/numbers
+         @@ -4,1 +4,1 @@
+         -four
+         +4
+         @@ -7,1 +7,1 @@
+         -7
+         +seven
+         diff --git a/romans b/romans
+         --- a/romans
+         +++ b/romans
+         @@ -6,1 +6,1 @@
+         -VI
+         +vi
+  
+       rewritten(description, content) as 19ed1bf64a2c using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 4a250e5bd992 -r 19ed1bf64a2c changeset-description
+         --- a/changeset-description
+         +++ b/changeset-description
+         @@ -1,1 +1,1 @@
+         -E1
+         +E3
+  
+         diff --git a/letters b/letters
+         --- a/letters
+         +++ b/letters
+         @@ -4,1 +4,1 @@
+         -D
+         +d
+         diff --git a/numbers b/numbers
+         --- a/numbers
+         +++ b/numbers
+         @@ -1,1 +1,1 @@
+         -1
+         +one
+         diff --git a/romans b/romans
+         --- a/romans
+         +++ b/romans
+         @@ -2,1 +2,1 @@
+         -II
+         +ii
+  
+  
+
+  $ hg evolve --content-divergent --rev 'desc("E3")'
+  merge:[2] E2
+  with: [3] E3
+  base: [1] E1
+  updating to "local" side of the conflict: 084ae625fa51
+  merging "other" content-divergent changeset '19ed1bf64a2c'
+  merging numbers
+  merging romans
+  1 files updated, 2 files merged, 0 files removed, 0 files unresolved
+  working directory is now at aae293050980
+  $ hg status
+  $ hg amend -m 'E4'
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID 8c2a6aae4bc5c1cc00c68276017dcef3d468e895
+  # Parent  6d1fdf6de7e2d9fc9b098aa286b60785bbeaab7a
+  E4
+  
+  diff --git a/numbers b/numbers
+  --- a/numbers
+  +++ b/numbers
+  @@ -1,1 +1,1 @@
+  -1
+  +one
+  @@ -7,1 +7,1 @@
+  -7
+  +seven
+  diff --git a/romans b/romans
+  --- a/romans
+  +++ b/romans
+  @@ -2,1 +2,1 @@
+  -II
+  +ii
+  @@ -6,1 +6,1 @@
+  -VI
+  +vi
+  $ hg log -G
+  @  5:8c2a6aae4bc5@default(draft) E4 []
+  |
+  o  0:6d1fdf6de7e2@default(draft) root []
+  
+  $ hg obslog --patch
+  @  8c2a6aae4bc5 (5) E4
+  |
+  x    aae293050980 (4) <<<<<<< divergent
+  |\     rewritten(description) as 8c2a6aae4bc5 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |      diff -r aae293050980 -r 8c2a6aae4bc5 changeset-description
+  | |      --- a/changeset-description
+  | |      +++ b/changeset-description
+  | |      @@ -1,4 +1,1 @@
+  | |      -<<<<<<< divergent
+  | |      -E2||||||| base
+  | |      -E1=======
+  | |      -E3>>>>>>> other
+  | |      +E4
+  | |
+  | |
+  x |  084ae625fa51 (2) E2
+  | |    rewritten(description, content) as aae293050980 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+  | |      diff -r 084ae625fa51 -r aae293050980 changeset-description
+  | |      --- a/changeset-description
+  | |      +++ b/changeset-description
+  | |      @@ -1,1 +1,4 @@
+  | |      -E2
+  | |      +<<<<<<< divergent
+  | |      +E2||||||| base
+  | |      +E1=======
+  | |      +E3>>>>>>> other
+  | |
+  | |      diff --git a/letters b/letters
+  | |      --- a/letters
+  | |      +++ b/letters
+  | |      @@ -4,1 +4,1 @@
+  | |      -D
+  | |      +d
+  | |      diff --git a/numbers b/numbers
+  | |      --- a/numbers
+  | |      +++ b/numbers
+  | |      @@ -1,1 +1,1 @@
+  | |      -1
+  | |      +one
+  | |      diff --git a/romans b/romans
+  | |      --- a/romans
+  | |      +++ b/romans
+  | |      @@ -2,1 +2,1 @@
+  | |      -II
+  | |      +ii
+  | |
+  | |
+  | x  19ed1bf64a2c (3) E3
+  |/     rewritten(description, content) as aae293050980 using evolve by test (Thu Jan 01 00:00:00 1970 +0000)
+  |        diff -r 19ed1bf64a2c -r aae293050980 changeset-description
+  |        --- a/changeset-description
+  |        +++ b/changeset-description
+  |        @@ -1,1 +1,4 @@
+  |        -E3
+  |        +<<<<<<< divergent
+  |        +E2||||||| base
+  |        +E1=======
+  |        +E3>>>>>>> other
+  |
+  |        diff --git a/numbers b/numbers
+  |        --- a/numbers
+  |        +++ b/numbers
+  |        @@ -4,1 +4,1 @@
+  |        -four
+  |        +4
+  |        @@ -7,1 +7,1 @@
+  |        -7
+  |        +seven
+  |        diff --git a/romans b/romans
+  |        --- a/romans
+  |        +++ b/romans
+  |        @@ -6,1 +6,1 @@
+  |        -VI
+  |        +vi
+  |
+  |
+  x  4a250e5bd992 (1) E1
+       rewritten(description, content) as 084ae625fa51 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 4a250e5bd992 -r 084ae625fa51 changeset-description
+         --- a/changeset-description
+         +++ b/changeset-description
+         @@ -1,1 +1,1 @@
+         -E1
+         +E2
+  
+         diff --git a/numbers b/numbers
+         --- a/numbers
+         +++ b/numbers
+         @@ -4,1 +4,1 @@
+         -four
+         +4
+         @@ -7,1 +7,1 @@
+         -7
+         +seven
+         diff --git a/romans b/romans
+         --- a/romans
+         +++ b/romans
+         @@ -6,1 +6,1 @@
+         -VI
+         +vi
+  
+       rewritten(description, content) as 19ed1bf64a2c using amend by test (Thu Jan 01 00:00:00 1970 +0000)
+         diff -r 4a250e5bd992 -r 19ed1bf64a2c changeset-description
+         --- a/changeset-description
+         +++ b/changeset-description
+         @@ -1,1 +1,1 @@
+         -E1
+         +E3
+  
+         diff --git a/letters b/letters
+         --- a/letters
+         +++ b/letters
+         @@ -4,1 +4,1 @@
+         -D
+         +d
+         diff --git a/numbers b/numbers
+         --- a/numbers
+         +++ b/numbers
+         @@ -1,1 +1,1 @@
+         -1
+         +one
+         diff --git a/romans b/romans
+         --- a/romans
+         +++ b/romans
+         @@ -2,1 +2,1 @@
+         -II
+         +ii
+  
+