]>
Commit | Line | Data |
---|---|---|
885b9810 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='merge-recursive backend test' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_expect_success 'setup 1' ' | |
8 | ||
9 | echo hello >a && | |
10 | o0=$(git hash-object a) && | |
11 | cp a b && | |
744747ef | 12 | cp a c && |
885b9810 JH |
13 | mkdir d && |
14 | cp a d/e && | |
15 | ||
16 | test_tick && | |
744747ef | 17 | git add a b c d/e && |
885b9810 JH |
18 | git commit -m initial && |
19 | c0=$(git rev-parse --verify HEAD) && | |
20 | git branch side && | |
21 | git branch df-1 && | |
22 | git branch df-2 && | |
23 | git branch df-3 && | |
24 | git branch remove && | |
7d82b06d | 25 | git branch submod && |
d5af5105 SK |
26 | git branch copy && |
27 | git branch rename && | |
8a1c0d32 SK |
28 | if test_have_prereq SYMLINKS |
29 | then | |
30 | git branch rename-ln | |
31 | fi && | |
885b9810 JH |
32 | |
33 | echo hello >>a && | |
34 | cp a d/e && | |
35 | o1=$(git hash-object a) && | |
36 | ||
37 | git add a d/e && | |
38 | ||
39 | test_tick && | |
40 | git commit -m "master modifies a and d/e" && | |
41 | c1=$(git rev-parse --verify HEAD) && | |
42 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
43 | ( | |
885b9810 JH |
44 | echo "100644 blob $o1 a" |
45 | echo "100644 blob $o0 b" | |
744747ef | 46 | echo "100644 blob $o0 c" |
885b9810 | 47 | echo "100644 blob $o1 d/e" |
885b9810 JH |
48 | echo "100644 $o1 0 a" |
49 | echo "100644 $o0 0 b" | |
744747ef | 50 | echo "100644 $o0 0 c" |
885b9810 JH |
51 | echo "100644 $o1 0 d/e" |
52 | ) >expected && | |
3af82863 | 53 | test_cmp expected actual |
885b9810 JH |
54 | ' |
55 | ||
56 | test_expect_success 'setup 2' ' | |
57 | ||
744747ef | 58 | rm -rf [abcd] && |
885b9810 JH |
59 | git checkout side && |
60 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
61 | ( | |
885b9810 JH |
62 | echo "100644 blob $o0 a" |
63 | echo "100644 blob $o0 b" | |
744747ef | 64 | echo "100644 blob $o0 c" |
885b9810 | 65 | echo "100644 blob $o0 d/e" |
885b9810 JH |
66 | echo "100644 $o0 0 a" |
67 | echo "100644 $o0 0 b" | |
744747ef | 68 | echo "100644 $o0 0 c" |
885b9810 JH |
69 | echo "100644 $o0 0 d/e" |
70 | ) >expected && | |
3af82863 | 71 | test_cmp expected actual && |
885b9810 JH |
72 | |
73 | echo goodbye >>a && | |
74 | o2=$(git hash-object a) && | |
75 | ||
76 | git add a && | |
77 | ||
78 | test_tick && | |
79 | git commit -m "side modifies a" && | |
80 | c2=$(git rev-parse --verify HEAD) && | |
81 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
82 | ( | |
885b9810 JH |
83 | echo "100644 blob $o2 a" |
84 | echo "100644 blob $o0 b" | |
744747ef | 85 | echo "100644 blob $o0 c" |
885b9810 | 86 | echo "100644 blob $o0 d/e" |
885b9810 JH |
87 | echo "100644 $o2 0 a" |
88 | echo "100644 $o0 0 b" | |
744747ef | 89 | echo "100644 $o0 0 c" |
885b9810 JH |
90 | echo "100644 $o0 0 d/e" |
91 | ) >expected && | |
3af82863 | 92 | test_cmp expected actual |
885b9810 JH |
93 | ' |
94 | ||
95 | test_expect_success 'setup 3' ' | |
96 | ||
744747ef | 97 | rm -rf [abcd] && |
885b9810 JH |
98 | git checkout df-1 && |
99 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
100 | ( | |
885b9810 JH |
101 | echo "100644 blob $o0 a" |
102 | echo "100644 blob $o0 b" | |
744747ef | 103 | echo "100644 blob $o0 c" |
885b9810 | 104 | echo "100644 blob $o0 d/e" |
885b9810 JH |
105 | echo "100644 $o0 0 a" |
106 | echo "100644 $o0 0 b" | |
744747ef | 107 | echo "100644 $o0 0 c" |
885b9810 JH |
108 | echo "100644 $o0 0 d/e" |
109 | ) >expected && | |
3af82863 | 110 | test_cmp expected actual && |
885b9810 JH |
111 | |
112 | rm -f b && mkdir b && echo df-1 >b/c && git add b/c && | |
113 | o3=$(git hash-object b/c) && | |
114 | ||
115 | test_tick && | |
116 | git commit -m "df-1 makes b/c" && | |
117 | c3=$(git rev-parse --verify HEAD) && | |
118 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
119 | ( | |
885b9810 JH |
120 | echo "100644 blob $o0 a" |
121 | echo "100644 blob $o3 b/c" | |
744747ef | 122 | echo "100644 blob $o0 c" |
885b9810 | 123 | echo "100644 blob $o0 d/e" |
885b9810 JH |
124 | echo "100644 $o0 0 a" |
125 | echo "100644 $o3 0 b/c" | |
744747ef | 126 | echo "100644 $o0 0 c" |
885b9810 JH |
127 | echo "100644 $o0 0 d/e" |
128 | ) >expected && | |
3af82863 | 129 | test_cmp expected actual |
885b9810 JH |
130 | ' |
131 | ||
132 | test_expect_success 'setup 4' ' | |
133 | ||
744747ef | 134 | rm -rf [abcd] && |
885b9810 JH |
135 | git checkout df-2 && |
136 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
137 | ( | |
885b9810 JH |
138 | echo "100644 blob $o0 a" |
139 | echo "100644 blob $o0 b" | |
744747ef | 140 | echo "100644 blob $o0 c" |
885b9810 | 141 | echo "100644 blob $o0 d/e" |
885b9810 JH |
142 | echo "100644 $o0 0 a" |
143 | echo "100644 $o0 0 b" | |
744747ef | 144 | echo "100644 $o0 0 c" |
885b9810 JH |
145 | echo "100644 $o0 0 d/e" |
146 | ) >expected && | |
3af82863 | 147 | test_cmp expected actual && |
885b9810 JH |
148 | |
149 | rm -f a && mkdir a && echo df-2 >a/c && git add a/c && | |
150 | o4=$(git hash-object a/c) && | |
151 | ||
152 | test_tick && | |
153 | git commit -m "df-2 makes a/c" && | |
154 | c4=$(git rev-parse --verify HEAD) && | |
155 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
156 | ( | |
885b9810 JH |
157 | echo "100644 blob $o4 a/c" |
158 | echo "100644 blob $o0 b" | |
744747ef | 159 | echo "100644 blob $o0 c" |
885b9810 | 160 | echo "100644 blob $o0 d/e" |
885b9810 JH |
161 | echo "100644 $o4 0 a/c" |
162 | echo "100644 $o0 0 b" | |
744747ef | 163 | echo "100644 $o0 0 c" |
885b9810 JH |
164 | echo "100644 $o0 0 d/e" |
165 | ) >expected && | |
3af82863 | 166 | test_cmp expected actual |
885b9810 JH |
167 | ' |
168 | ||
169 | test_expect_success 'setup 5' ' | |
170 | ||
744747ef | 171 | rm -rf [abcd] && |
885b9810 JH |
172 | git checkout remove && |
173 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
174 | ( | |
885b9810 JH |
175 | echo "100644 blob $o0 a" |
176 | echo "100644 blob $o0 b" | |
744747ef | 177 | echo "100644 blob $o0 c" |
885b9810 | 178 | echo "100644 blob $o0 d/e" |
885b9810 JH |
179 | echo "100644 $o0 0 a" |
180 | echo "100644 $o0 0 b" | |
744747ef | 181 | echo "100644 $o0 0 c" |
885b9810 JH |
182 | echo "100644 $o0 0 d/e" |
183 | ) >expected && | |
3af82863 | 184 | test_cmp expected actual && |
885b9810 JH |
185 | |
186 | rm -f b && | |
187 | echo remove-conflict >a && | |
188 | ||
189 | git add a && | |
190 | git rm b && | |
191 | o5=$(git hash-object a) && | |
192 | ||
193 | test_tick && | |
194 | git commit -m "remove removes b and modifies a" && | |
195 | c5=$(git rev-parse --verify HEAD) && | |
196 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
197 | ( | |
885b9810 | 198 | echo "100644 blob $o5 a" |
744747ef | 199 | echo "100644 blob $o0 c" |
885b9810 | 200 | echo "100644 blob $o0 d/e" |
885b9810 | 201 | echo "100644 $o5 0 a" |
744747ef | 202 | echo "100644 $o0 0 c" |
885b9810 JH |
203 | echo "100644 $o0 0 d/e" |
204 | ) >expected && | |
3af82863 | 205 | test_cmp expected actual |
885b9810 JH |
206 | |
207 | ' | |
208 | ||
209 | test_expect_success 'setup 6' ' | |
210 | ||
744747ef | 211 | rm -rf [abcd] && |
885b9810 JH |
212 | git checkout df-3 && |
213 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
214 | ( | |
885b9810 JH |
215 | echo "100644 blob $o0 a" |
216 | echo "100644 blob $o0 b" | |
744747ef | 217 | echo "100644 blob $o0 c" |
885b9810 | 218 | echo "100644 blob $o0 d/e" |
885b9810 JH |
219 | echo "100644 $o0 0 a" |
220 | echo "100644 $o0 0 b" | |
744747ef | 221 | echo "100644 $o0 0 c" |
885b9810 JH |
222 | echo "100644 $o0 0 d/e" |
223 | ) >expected && | |
3af82863 | 224 | test_cmp expected actual && |
885b9810 JH |
225 | |
226 | rm -fr d && echo df-3 >d && git add d && | |
227 | o6=$(git hash-object d) && | |
228 | ||
229 | test_tick && | |
230 | git commit -m "df-3 makes d" && | |
231 | c6=$(git rev-parse --verify HEAD) && | |
232 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
233 | ( | |
885b9810 JH |
234 | echo "100644 blob $o0 a" |
235 | echo "100644 blob $o0 b" | |
744747ef | 236 | echo "100644 blob $o0 c" |
885b9810 | 237 | echo "100644 blob $o6 d" |
885b9810 JH |
238 | echo "100644 $o0 0 a" |
239 | echo "100644 $o0 0 b" | |
744747ef | 240 | echo "100644 $o0 0 c" |
885b9810 JH |
241 | echo "100644 $o6 0 d" |
242 | ) >expected && | |
3af82863 | 243 | test_cmp expected actual |
885b9810 JH |
244 | ' |
245 | ||
7d82b06d JS |
246 | test_expect_success 'setup 7' ' |
247 | ||
248 | git checkout submod && | |
249 | git rm d/e && | |
250 | test_tick && | |
251 | git commit -m "remove d/e" && | |
252 | git update-index --add --cacheinfo 160000 $c1 d && | |
253 | test_tick && | |
254 | git commit -m "make d/ a submodule" | |
255 | ' | |
256 | ||
d5af5105 SK |
257 | test_expect_success 'setup 8' ' |
258 | git checkout rename && | |
259 | git mv a e && | |
260 | git add e && | |
261 | test_tick && | |
8a1c0d32 SK |
262 | git commit -m "rename a->e" && |
263 | if test_have_prereq SYMLINKS | |
264 | then | |
265 | git checkout rename-ln && | |
266 | git mv a e && | |
267 | ln -s e a && | |
268 | git add a e && | |
269 | test_tick && | |
270 | git commit -m "rename a->e, symlink a->e" | |
271 | fi | |
d5af5105 SK |
272 | ' |
273 | ||
274 | test_expect_success 'setup 9' ' | |
275 | git checkout copy && | |
276 | cp a e && | |
277 | git add e && | |
278 | test_tick && | |
279 | git commit -m "copy a->e" | |
280 | ' | |
281 | ||
885b9810 JH |
282 | test_expect_success 'merge-recursive simple' ' |
283 | ||
744747ef | 284 | rm -fr [abcd] && |
885b9810 JH |
285 | git checkout -f "$c2" && |
286 | ||
0cb0e143 | 287 | git merge-recursive "$c0" -- "$c2" "$c1" |
885b9810 JH |
288 | status=$? |
289 | case "$status" in | |
290 | 1) | |
291 | : happy | |
292 | ;; | |
293 | *) | |
294 | echo >&2 "why status $status!!!" | |
295 | false | |
296 | ;; | |
297 | esac | |
298 | ' | |
299 | ||
300 | test_expect_success 'merge-recursive result' ' | |
301 | ||
302 | git ls-files -s >actual && | |
303 | ( | |
885b9810 JH |
304 | echo "100644 $o0 1 a" |
305 | echo "100644 $o2 2 a" | |
306 | echo "100644 $o1 3 a" | |
307 | echo "100644 $o0 0 b" | |
744747ef | 308 | echo "100644 $o0 0 c" |
885b9810 JH |
309 | echo "100644 $o1 0 d/e" |
310 | ) >expected && | |
3af82863 | 311 | test_cmp expected actual |
885b9810 JH |
312 | |
313 | ' | |
314 | ||
446247db JH |
315 | test_expect_success 'fail if the index has unresolved entries' ' |
316 | ||
317 | rm -fr [abcd] && | |
318 | git checkout -f "$c1" && | |
319 | ||
320 | test_must_fail git merge "$c5" && | |
321 | test_must_fail git merge "$c5" 2> out && | |
d38a30df MM |
322 | grep "not possible because you have unmerged files" out && |
323 | git add -u && | |
324 | test_must_fail git merge "$c5" 2> out && | |
c8c562a2 CB |
325 | grep "You have not concluded your merge" out && |
326 | rm -f .git/MERGE_HEAD && | |
327 | test_must_fail git merge "$c5" 2> out && | |
e6c111b4 | 328 | grep "Your local changes to the following files would be overwritten by merge:" out |
446247db JH |
329 | ' |
330 | ||
885b9810 JH |
331 | test_expect_success 'merge-recursive remove conflict' ' |
332 | ||
744747ef | 333 | rm -fr [abcd] && |
885b9810 JH |
334 | git checkout -f "$c1" && |
335 | ||
0cb0e143 | 336 | git merge-recursive "$c0" -- "$c1" "$c5" |
885b9810 JH |
337 | status=$? |
338 | case "$status" in | |
339 | 1) | |
340 | : happy | |
341 | ;; | |
342 | *) | |
343 | echo >&2 "why status $status!!!" | |
344 | false | |
345 | ;; | |
346 | esac | |
347 | ' | |
348 | ||
349 | test_expect_success 'merge-recursive remove conflict' ' | |
350 | ||
351 | git ls-files -s >actual && | |
352 | ( | |
885b9810 JH |
353 | echo "100644 $o0 1 a" |
354 | echo "100644 $o1 2 a" | |
355 | echo "100644 $o5 3 a" | |
744747ef | 356 | echo "100644 $o0 0 c" |
885b9810 JH |
357 | echo "100644 $o1 0 d/e" |
358 | ) >expected && | |
3af82863 | 359 | test_cmp expected actual |
885b9810 JH |
360 | |
361 | ' | |
362 | ||
363 | test_expect_success 'merge-recursive d/f simple' ' | |
744747ef | 364 | rm -fr [abcd] && |
885b9810 JH |
365 | git reset --hard && |
366 | git checkout -f "$c1" && | |
367 | ||
0cb0e143 | 368 | git merge-recursive "$c0" -- "$c1" "$c3" |
885b9810 JH |
369 | ' |
370 | ||
371 | test_expect_success 'merge-recursive result' ' | |
372 | ||
373 | git ls-files -s >actual && | |
374 | ( | |
885b9810 JH |
375 | echo "100644 $o1 0 a" |
376 | echo "100644 $o3 0 b/c" | |
744747ef | 377 | echo "100644 $o0 0 c" |
885b9810 JH |
378 | echo "100644 $o1 0 d/e" |
379 | ) >expected && | |
3af82863 | 380 | test_cmp expected actual |
885b9810 JH |
381 | |
382 | ' | |
383 | ||
384 | test_expect_success 'merge-recursive d/f conflict' ' | |
385 | ||
744747ef | 386 | rm -fr [abcd] && |
885b9810 JH |
387 | git reset --hard && |
388 | git checkout -f "$c1" && | |
389 | ||
0cb0e143 | 390 | git merge-recursive "$c0" -- "$c1" "$c4" |
885b9810 JH |
391 | status=$? |
392 | case "$status" in | |
393 | 1) | |
394 | : happy | |
395 | ;; | |
396 | *) | |
397 | echo >&2 "why status $status!!!" | |
398 | false | |
399 | ;; | |
400 | esac | |
401 | ' | |
402 | ||
403 | test_expect_success 'merge-recursive d/f conflict result' ' | |
404 | ||
405 | git ls-files -s >actual && | |
406 | ( | |
885b9810 JH |
407 | echo "100644 $o0 1 a" |
408 | echo "100644 $o1 2 a" | |
409 | echo "100644 $o4 0 a/c" | |
410 | echo "100644 $o0 0 b" | |
744747ef | 411 | echo "100644 $o0 0 c" |
885b9810 JH |
412 | echo "100644 $o1 0 d/e" |
413 | ) >expected && | |
3af82863 | 414 | test_cmp expected actual |
885b9810 JH |
415 | |
416 | ' | |
417 | ||
418 | test_expect_success 'merge-recursive d/f conflict the other way' ' | |
419 | ||
744747ef | 420 | rm -fr [abcd] && |
885b9810 JH |
421 | git reset --hard && |
422 | git checkout -f "$c4" && | |
423 | ||
0cb0e143 | 424 | git merge-recursive "$c0" -- "$c4" "$c1" |
885b9810 JH |
425 | status=$? |
426 | case "$status" in | |
427 | 1) | |
428 | : happy | |
429 | ;; | |
430 | *) | |
431 | echo >&2 "why status $status!!!" | |
432 | false | |
433 | ;; | |
434 | esac | |
435 | ' | |
436 | ||
437 | test_expect_success 'merge-recursive d/f conflict result the other way' ' | |
438 | ||
439 | git ls-files -s >actual && | |
440 | ( | |
885b9810 JH |
441 | echo "100644 $o0 1 a" |
442 | echo "100644 $o1 3 a" | |
443 | echo "100644 $o4 0 a/c" | |
444 | echo "100644 $o0 0 b" | |
744747ef | 445 | echo "100644 $o0 0 c" |
885b9810 JH |
446 | echo "100644 $o1 0 d/e" |
447 | ) >expected && | |
3af82863 | 448 | test_cmp expected actual |
885b9810 JH |
449 | |
450 | ' | |
451 | ||
452 | test_expect_success 'merge-recursive d/f conflict' ' | |
453 | ||
744747ef | 454 | rm -fr [abcd] && |
885b9810 JH |
455 | git reset --hard && |
456 | git checkout -f "$c1" && | |
457 | ||
0cb0e143 | 458 | git merge-recursive "$c0" -- "$c1" "$c6" |
885b9810 JH |
459 | status=$? |
460 | case "$status" in | |
461 | 1) | |
462 | : happy | |
463 | ;; | |
464 | *) | |
465 | echo >&2 "why status $status!!!" | |
466 | false | |
467 | ;; | |
468 | esac | |
469 | ' | |
470 | ||
471 | test_expect_success 'merge-recursive d/f conflict result' ' | |
472 | ||
473 | git ls-files -s >actual && | |
474 | ( | |
885b9810 JH |
475 | echo "100644 $o1 0 a" |
476 | echo "100644 $o0 0 b" | |
744747ef | 477 | echo "100644 $o0 0 c" |
885b9810 JH |
478 | echo "100644 $o6 3 d" |
479 | echo "100644 $o0 1 d/e" | |
480 | echo "100644 $o1 2 d/e" | |
481 | ) >expected && | |
3af82863 | 482 | test_cmp expected actual |
885b9810 JH |
483 | |
484 | ' | |
485 | ||
486 | test_expect_success 'merge-recursive d/f conflict' ' | |
487 | ||
744747ef | 488 | rm -fr [abcd] && |
885b9810 JH |
489 | git reset --hard && |
490 | git checkout -f "$c6" && | |
491 | ||
0cb0e143 | 492 | git merge-recursive "$c0" -- "$c6" "$c1" |
885b9810 JH |
493 | status=$? |
494 | case "$status" in | |
495 | 1) | |
496 | : happy | |
497 | ;; | |
498 | *) | |
499 | echo >&2 "why status $status!!!" | |
500 | false | |
501 | ;; | |
502 | esac | |
503 | ' | |
504 | ||
505 | test_expect_success 'merge-recursive d/f conflict result' ' | |
506 | ||
507 | git ls-files -s >actual && | |
508 | ( | |
885b9810 JH |
509 | echo "100644 $o1 0 a" |
510 | echo "100644 $o0 0 b" | |
744747ef | 511 | echo "100644 $o0 0 c" |
885b9810 JH |
512 | echo "100644 $o6 2 d" |
513 | echo "100644 $o0 1 d/e" | |
514 | echo "100644 $o1 3 d/e" | |
515 | ) >expected && | |
3af82863 | 516 | test_cmp expected actual |
885b9810 JH |
517 | |
518 | ' | |
519 | ||
520 | test_expect_success 'reset and 3-way merge' ' | |
521 | ||
522 | git reset --hard "$c2" && | |
523 | git read-tree -m "$c0" "$c2" "$c1" | |
524 | ||
525 | ' | |
526 | ||
527 | test_expect_success 'reset and bind merge' ' | |
528 | ||
529 | git reset --hard master && | |
530 | git read-tree --prefix=M/ master && | |
531 | git ls-files -s >actual && | |
532 | ( | |
885b9810 JH |
533 | echo "100644 $o1 0 M/a" |
534 | echo "100644 $o0 0 M/b" | |
744747ef | 535 | echo "100644 $o0 0 M/c" |
885b9810 JH |
536 | echo "100644 $o1 0 M/d/e" |
537 | echo "100644 $o1 0 a" | |
538 | echo "100644 $o0 0 b" | |
744747ef | 539 | echo "100644 $o0 0 c" |
885b9810 JH |
540 | echo "100644 $o1 0 d/e" |
541 | ) >expected && | |
3af82863 | 542 | test_cmp expected actual && |
885b9810 JH |
543 | |
544 | git read-tree --prefix=a1/ master && | |
545 | git ls-files -s >actual && | |
546 | ( | |
885b9810 JH |
547 | echo "100644 $o1 0 M/a" |
548 | echo "100644 $o0 0 M/b" | |
744747ef | 549 | echo "100644 $o0 0 M/c" |
885b9810 JH |
550 | echo "100644 $o1 0 M/d/e" |
551 | echo "100644 $o1 0 a" | |
885b9810 JH |
552 | echo "100644 $o1 0 a1/a" |
553 | echo "100644 $o0 0 a1/b" | |
744747ef | 554 | echo "100644 $o0 0 a1/c" |
885b9810 JH |
555 | echo "100644 $o1 0 a1/d/e" |
556 | echo "100644 $o0 0 b" | |
744747ef | 557 | echo "100644 $o0 0 c" |
885b9810 JH |
558 | echo "100644 $o1 0 d/e" |
559 | ) >expected && | |
a48fcd83 | 560 | test_cmp expected actual && |
885b9810 JH |
561 | |
562 | git read-tree --prefix=z/ master && | |
563 | git ls-files -s >actual && | |
564 | ( | |
885b9810 JH |
565 | echo "100644 $o1 0 M/a" |
566 | echo "100644 $o0 0 M/b" | |
744747ef | 567 | echo "100644 $o0 0 M/c" |
885b9810 JH |
568 | echo "100644 $o1 0 M/d/e" |
569 | echo "100644 $o1 0 a" | |
885b9810 JH |
570 | echo "100644 $o1 0 a1/a" |
571 | echo "100644 $o0 0 a1/b" | |
744747ef | 572 | echo "100644 $o0 0 a1/c" |
885b9810 JH |
573 | echo "100644 $o1 0 a1/d/e" |
574 | echo "100644 $o0 0 b" | |
744747ef | 575 | echo "100644 $o0 0 c" |
885b9810 | 576 | echo "100644 $o1 0 d/e" |
885b9810 JH |
577 | echo "100644 $o1 0 z/a" |
578 | echo "100644 $o0 0 z/b" | |
744747ef | 579 | echo "100644 $o0 0 z/c" |
885b9810 JH |
580 | echo "100644 $o1 0 z/d/e" |
581 | ) >expected && | |
3af82863 | 582 | test_cmp expected actual |
885b9810 JH |
583 | |
584 | ' | |
585 | ||
41f13af5 AR |
586 | test_expect_success 'merge removes empty directories' ' |
587 | ||
588 | git reset --hard master && | |
589 | git checkout -b rm && | |
590 | git rm d/e && | |
591 | git commit -mremoved-d/e && | |
592 | git checkout master && | |
593 | git merge -s recursive rm && | |
594 | test_must_fail test -d d | |
595 | ' | |
596 | ||
7d82b06d JS |
597 | test_expect_failure 'merge-recursive simple w/submodule' ' |
598 | ||
599 | git checkout submod && | |
600 | git merge remove | |
601 | ' | |
602 | ||
603 | test_expect_failure 'merge-recursive simple w/submodule result' ' | |
604 | ||
605 | git ls-files -s >actual && | |
606 | ( | |
607 | echo "100644 $o5 0 a" | |
608 | echo "100644 $o0 0 c" | |
609 | echo "160000 $c1 0 d" | |
610 | ) >expected && | |
611 | test_cmp expected actual | |
612 | ' | |
613 | ||
d5af5105 SK |
614 | test_expect_success 'merge-recursive copy vs. rename' ' |
615 | git checkout -f copy && | |
616 | git merge rename && | |
617 | ( git ls-tree -r HEAD && git ls-files -s ) >actual && | |
618 | ( | |
619 | echo "100644 blob $o0 b" | |
620 | echo "100644 blob $o0 c" | |
621 | echo "100644 blob $o0 d/e" | |
622 | echo "100644 blob $o0 e" | |
623 | echo "100644 $o0 0 b" | |
624 | echo "100644 $o0 0 c" | |
625 | echo "100644 $o0 0 d/e" | |
626 | echo "100644 $o0 0 e" | |
627 | ) >expected && | |
628 | test_cmp expected actual | |
629 | ' | |
630 | ||
8a1c0d32 SK |
631 | if test_have_prereq SYMLINKS |
632 | then | |
633 | test_expect_success 'merge-recursive rename vs. rename/symlink' ' | |
634 | ||
635 | git checkout -f rename && | |
636 | git merge rename-ln && | |
637 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
638 | ( | |
639 | echo "100644 blob $o0 b" | |
640 | echo "100644 blob $o0 c" | |
641 | echo "100644 blob $o0 d/e" | |
642 | echo "100644 blob $o0 e" | |
643 | echo "100644 $o0 0 b" | |
644 | echo "100644 $o0 0 c" | |
645 | echo "100644 $o0 0 d/e" | |
646 | echo "100644 $o0 0 e" | |
647 | ) >expected && | |
648 | test_cmp expected actual | |
649 | ' | |
650 | fi | |
651 | ||
652 | ||
885b9810 | 653 | test_done |