diff -r 4a740f9eee49 -r 522abf1d70b7 tests/test-evolve.t --- a/tests/test-evolve.t Mon Dec 24 17:47:28 2018 +0100 +++ b/tests/test-evolve.t Tue Jan 22 12:54:44 2019 -0500 @@ -1590,3 +1590,110 @@ x 0:f7ad41964313 added a () + $ cd .. + +Test which shows that orphanmerge evolution can result to crash because of +lastsolved not being updated in case of orphanmerge: +(It will be fixed in next patch) + +Prepare the repo: + $ hg init orphanmergerepo + $ cd orphanmergerepo + $ echo a > a + $ for fn in a b c; do echo foo > $fn; hg ci -Am "added "$fn; done; + adding a + adding b + adding c +Lets create a merge commit so that we can create orhpan merge later: + $ hg up 1 -q + $ echo feature > f + $ hg ci -Am "added feature f" + adding f + created new head + $ hg merge + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg ci -m "merge feature branch" + $ glog + @ 4:2c0a98d38026@default(draft) merge feature branch + |\ + | o 3:4c33e511041e@default(draft) added feature f + | | + o | 2:8be98ac1a569@default(draft) added c + |/ + o 1:80e6d2c47cfe@default(draft) added b + | + o 0:f7ad41964313@default(draft) added a + + +Now make the parents of merge commit obsolete to get a orphan merge: + $ hg up 2 -q + $ echo "fixit" > c + $ hg ci --amend -m "updated c" + 1 new orphan changesets + $ hg up 3 -q + $ echo "fixit" > c + $ hg ci --amend -m "updated f" + $ glog + @ 6:086d9bedcd75@default(draft) updated f + | + | o 5:f84f2c548fbc@default(draft) updated c + |/ + | * 4:2c0a98d38026@default(draft) merge feature branch + | |\ + +---x 3:4c33e511041e@default(draft) added feature f + | | + | x 2:8be98ac1a569@default(draft) added c + |/ + o 1:80e6d2c47cfe@default(draft) added b + | + o 0:f7ad41964313@default(draft) added a + + +To check `lastsolved` contain right value after completion of orphan-merge +resolution there should be one more trouble to be evolved; lets create one: + $ hg up 1 -q + $ echo d > d + $ hg ci -Am "added d" + adding c + adding d + created new head + $ echo e > e + $ hg ci -Am "added e" + adding e + $ hg up .^ + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo "updated d" >> d + $ hg ci --amend -m "updated d" + 1 new orphan changesets + $ glog + @ 9:7c4d1834c346@default(draft) updated d + | + | * 8:421f7614462a@default(draft) added e + | | + | x 7:afe5acea1990@default(draft) added d + |/ + | o 6:086d9bedcd75@default(draft) updated f + |/ + | o 5:f84f2c548fbc@default(draft) updated c + |/ + | * 4:2c0a98d38026@default(draft) merge feature branch + | |\ + +---x 3:4c33e511041e@default(draft) added feature f + | | + | x 2:8be98ac1a569@default(draft) added c + |/ + o 1:80e6d2c47cfe@default(draft) added b + | + o 0:f7ad41964313@default(draft) added a + +Now we have one orphan merge and one more orphan cset that we just created. +Lets evolve: + $ hg evolve --all --any + move:[4] merge feature branch + atop:[5] updated c + move:[10] merge feature branch + atop:[6] updated f + move:[8] added e + atop:[9] updated d + working directory is now at 7c67cee06242