3 test_description
='git merge
5 Testing octopus merge when reducing parents to independent branches.'
14 # So 1, 2, 3 and 5 should be kept, 4 should be avoided.
16 test_expect_success
'setup' '
25 git reset --hard c0 &&
30 git reset --hard c0 &&
35 git reset --hard c0 &&
46 test_expect_success
'merge c1 with c2, c3, c4, c5' '
47 git reset --hard c1 &&
48 git merge c2 c3 c4 c5 &&
49 test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&
50 test "$(git rev-parse c1)" = "$(git rev-parse HEAD^1)" &&
51 test "$(git rev-parse c2)" = "$(git rev-parse HEAD^2)" &&
52 test "$(git rev-parse c3)" = "$(git rev-parse HEAD^3)" &&
53 test "$(git rev-parse c5)" = "$(git rev-parse HEAD^4)" &&
54 git diff --exit-code &&
61 git show --format=%s -s >actual &&
69 test_expect_success
'pull c2, c3, c4, c5 into c1' '
70 git reset --hard c1 &&
71 git pull . c2 c3 c4 c5 &&
72 test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&
73 test "$(git rev-parse c1)" = "$(git rev-parse HEAD^1)" &&
74 test "$(git rev-parse c2)" = "$(git rev-parse HEAD^2)" &&
75 test "$(git rev-parse c3)" = "$(git rev-parse HEAD^3)" &&
76 test "$(git rev-parse c5)" = "$(git rev-parse HEAD^4)" &&
77 git diff --exit-code &&
84 git show --format=%s -s >actual &&
92 test_expect_success
'setup' '
100 git reset --hard A &&
110 test_expect_success
'merge E and I' '
111 git reset --hard A &&
115 test_expect_success
'verify merge result' '
116 test $(git rev-parse HEAD^1) = $(git rev-parse E) &&
117 test $(git rev-parse HEAD^2) = $(git rev-parse I)
120 test_expect_success
'add conflicts' '
121 git reset --hard E &&
126 git reset --hard I &&
133 test_expect_success
'merge E2 and I2, causing a conflict and resolve it' '
134 git reset --hard A &&
135 test_must_fail git merge E2 I2 &&
138 git commit -m "resolve conflict"
141 test_expect_success
'verify merge result' '
142 test $(git rev-parse HEAD^1) = $(git rev-parse E2) &&
143 test $(git rev-parse HEAD^2) = $(git rev-parse I2)
146 test_expect_success
'fast-forward to redundant refs' '
147 git reset --hard c0 &&
151 test_expect_success
'verify merge result' '
152 test $(git rev-parse HEAD) = $(git rev-parse c5)
155 test_expect_success
'merge up-to-date redundant refs' '
156 git reset --hard c5 &&
160 test_expect_success
'verify merge result' '
161 test $(git rev-parse HEAD) = $(git rev-parse c5)