1-- Verify that we can resolve this extended use case involving a 2-- dropped_modified conflict: 3-- 4-- A 5-- / \ 6-- M1 D 7-- | \ | 8-- M2 P 9-- \ / 10-- Q 11-- 12-- The file is modified and merged into the dropped branch twice. 13 14mtn_setup() 15 16addfile("file_2", "file_2 base") -- modify/rename left, drop right; drop 17commit("testbranch", "base") 18base = base_revision() 19 20writefile("file_2", "file_2 left 1") 21 22commit("testbranch", "left 1") 23left_1 = base_revision() 24 25revert_to(base) 26 27check(mtn("drop", "file_2"), 0, false, false) 28 29commit("testbranch", "right 1") 30right_1 = base_revision() 31 32check(mtn("show_conflicts", left_1, right_1), 0, nil, true) 33check(samelines("stderr", 34 {"mtn: [left] 506d8ed51b06c0080e8bb307155a88637045b532", 35 "mtn: [right] a2889488ed1801a904d0219ec9939dfc2e9be033", 36 "mtn: [ancestor] f80ff103551d0313647d6c84990bc9db6b158dac", 37 "mtn: conflict: file 'file_2'", 38 "mtn: modified on the left, named file_2", 39 "mtn: dropped on the right", 40 "mtn: 1 conflict with supported resolutions."})) 41 42check(mtn("conflicts", "store", left_1, right_1), 0, nil, true) 43 44check(mtn("conflicts", "resolve_first", "keep"), 0, nil, true) 45 46check(mtn("explicit_merge", "--resolve-conflicts", left_1, right_1, "testbranch"), 0, nil, true) 47check(samelines("stderr", 48 {"mtn: [left] 506d8ed51b06c0080e8bb307155a88637045b532", 49 "mtn: [right] a2889488ed1801a904d0219ec9939dfc2e9be033", 50 "mtn: keeping 'file_2' from left", 51 "mtn: history for 'file_2' from left will be lost; see user manual Merge Conflicts section", 52 "mtn: [merged] 3df3126220588440def7b08f488ca35eaa94f1b6"})) 53 54check(mtn("update"), 0, nil, true) 55check(samelines("file_2", {"file_2 left 1"})) 56 57right_2 = base_revision() 58 59-- round 2; modify the file again 60revert_to(left_1) 61 62writefile("file_2", "file_2 left 2") 63 64commit("testbranch", "left 2") 65left_2 = base_revision() 66 67check(mtn("show_conflicts", left_2, right_2), 0, nil, true) 68check(samelines("stderr", 69 {"mtn: [left] 5a144a43f03692e389f3ddd4c510a4d9754061d5", 70 "mtn: [right] 3df3126220588440def7b08f488ca35eaa94f1b6", 71 "mtn: [ancestor] 506d8ed51b06c0080e8bb307155a88637045b532", 72 "mtn: conflict: file 'file_2'", 73 "mtn: modified on the left, named file_2", 74 "mtn: dropped and recreated on the right", 75 "mtn: 1 conflict with supported resolutions."})) 76 77check(mtn("conflicts", "store", left_2, right_2), 0, nil, true) 78 79check(mtn("conflicts", "resolve_first_left", "keep"), 0, nil, true) 80check(mtn("conflicts", "resolve_first_right", "drop"), 0, nil, true) 81 82check(mtn("explicit_merge", "--resolve-conflicts", left_2, right_2, "testbranch"), 0, nil, true) 83check(qgrep("mtn: keeping 'file_2' from left", "stderr")) 84check(qgrep("mtn: dropping 'file_2' from right", "stderr")) 85 86check(mtn("update"), 0, nil, true) 87check(samelines("file_2", {"file_2 left 2"})) 88 89-- end of file 90