evolve: add tests for the case when resolution parent is ambiguous stable
authorSushil khanchi <sushilkhanchi97@gmail.com>
Sat, 07 Dec 2019 03:27:50 +0530
branchstable
changeset 4993 e0b5ce458af5
parent 4992 1eab41625dee
child 4994 8b6e2565aaf3
evolve: add tests for the case when resolution parent is ambiguous
tests/test-evolve-content-divergent-stack.t
--- a/tests/test-evolve-content-divergent-stack.t	Fri Dec 06 23:43:00 2019 +0530
+++ b/tests/test-evolve-content-divergent-stack.t	Sat Dec 07 03:27:50 2019 +0530
@@ -503,3 +503,124 @@
      +b without typo
   
   $ cd ..
+
+Testing case when resolution parent is ambiguous (MultipleSuccessorsError)
+--------------------------------------------------------------------------
+
+  $ hg init multiplesuccs1
+  $ cd multiplesuccs1
+  $ echo base > base
+  $ hg ci -Aqm "added base"
+  $ echo foo > foo
+  $ hg ci -Aqm "added foo"
+  $ echo bar > bar; echo car > car
+  $ hg ci -Aqm "added bar and car"
+  $ echo dar > dar
+  $ hg ci -Aqm "added dar"
+
+  $ cd ..
+  $ hg clone multiplesuccs1 multiplesuccs2
+  updating to branch default
+  5 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd multiplesuccs2
+  $ hg up -r "desc('added foo')"
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+  $ echo newfoo > foo
+  $ hg amend
+  2 new orphan changesets
+  $ hg evolve
+  move:[2] added bar and car
+  atop:[4] added foo
+  move:[3] added dar
+
+  $ cd ../multiplesuccs1
+  $ hg up -r "desc('added base')"
+  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ echo tuna > tuna
+  $ hg ci -Aqm "added tuna"
+  $ hg rebase -s "desc('added foo')" -d .
+  rebasing 1:8da7bbaea4f7 "added foo"
+  rebasing 2:7f4b97b13607 "added bar and car"
+  rebasing 3:9f12b2fcb3de "added dar"
+
+  $ cd ../multiplesuccs2
+  $ hg pull
+  pulling from $TESTTMP/multiplesuccs1
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 4 changesets with 1 changes to 5 files (+1 heads)
+  3 new obsolescence markers
+  6 new content-divergent changesets
+  new changesets 9703820a7d5b:9a1f460df8b5 (4 drafts)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+  $ hg glog
+  *  10:9a1f460df8b5 added dar
+  |   () [default] draft
+  *  9:7dd5b9d42ef3 added bar and car
+  |   () [default] draft
+  *  8:afd8b2ea1b77 added foo
+  |   () [default] draft
+  o  7:9703820a7d5b added tuna
+  |   () [default] draft
+  | *  6:57a3f8edf065 added dar
+  | |   () [default] draft
+  | *  5:f4ed107810a7 added bar and car
+  | |   () [default] draft
+  | @  4:8a2d93492f59 added foo
+  |/    () [default] draft
+  o  0:bde1d2b6b5e5 added base
+      () [default] draft
+
+  $ hg evolve -r 4+5 --content-divergent
+  merge:[8] added foo
+  with: [4] added foo
+  base: [1] added foo
+  rebasing "other" content-divergent changeset 8a2d93492f59 on 9703820a7d5b
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  merge:[9] added bar and car
+  with: [5] added bar and car
+  base: [2] added bar and car
+  rebasing "divergent" content-divergent changeset 7dd5b9d42ef3 on 8ef6ad88580d
+  rebasing "other" content-divergent changeset f4ed107810a7 on 8ef6ad88580d
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  2 new orphan changesets
+  working directory is now at 8ef6ad88580d
+
+  $ hg glog
+  o  15:09ba686a465e added bar and car
+  |   () [default] draft
+  @  12:8ef6ad88580d added foo
+  |   () [default] draft
+  | *  10:9a1f460df8b5 added dar
+  | |   () [default] draft
+  | x  9:7dd5b9d42ef3 added bar and car
+  | |   () [default] draft
+  | x  8:afd8b2ea1b77 added foo
+  |/    () [default] draft
+  o  7:9703820a7d5b added tuna
+  |   () [default] draft
+  | *  6:57a3f8edf065 added dar
+  | |   () [default] draft
+  | x  5:f4ed107810a7 added bar and car
+  | |   () [default] draft
+  | x  4:8a2d93492f59 added foo
+  |/    () [default] draft
+  o  0:bde1d2b6b5e5 added base
+      () [default] draft
+
+  $ echo bar > bar; hg ci -Aqm "added bar"
+  $ echo car > car; hg ci -Aqm "added car"
+  $ hg prune --split -s 16+17 -r 15
+  1 changesets pruned
+
+  $ hg evolve --content-divergent
+  skipping 57a3f8edf065: have a different parent than 9a1f460df8b5 (not handled yet)
+  | 57a3f8edf065, 9a1f460df8b5 are not based on the same changeset.
+  | With the current state of its implementation, 
+  | evolve does not work in that case.
+  | rebase one of them next to the other and run 
+  | this command again.
+  | - either: hg rebase --dest 'p1(57a3f8edf065)' -r 9a1f460df8b5
+  | - or:     hg rebase --dest 'p1(9a1f460df8b5)' -r 57a3f8edf065