]>
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 && | |
814f7d90 JK |
270 | git commit -m "rename a->e, symlink a->e" && |
271 | oln=`printf e | git hash-object --stdin` | |
8a1c0d32 | 272 | fi |
d5af5105 SK |
273 | ' |
274 | ||
275 | test_expect_success 'setup 9' ' | |
276 | git checkout copy && | |
277 | cp a e && | |
278 | git add e && | |
279 | test_tick && | |
280 | git commit -m "copy a->e" | |
281 | ' | |
282 | ||
885b9810 JH |
283 | test_expect_success 'merge-recursive simple' ' |
284 | ||
744747ef | 285 | rm -fr [abcd] && |
885b9810 JH |
286 | git checkout -f "$c2" && |
287 | ||
67b6afe1 | 288 | test_expect_code 1 git merge-recursive "$c0" -- "$c2" "$c1" |
885b9810 JH |
289 | ' |
290 | ||
291 | test_expect_success 'merge-recursive result' ' | |
292 | ||
293 | git ls-files -s >actual && | |
294 | ( | |
885b9810 JH |
295 | echo "100644 $o0 1 a" |
296 | echo "100644 $o2 2 a" | |
297 | echo "100644 $o1 3 a" | |
298 | echo "100644 $o0 0 b" | |
744747ef | 299 | echo "100644 $o0 0 c" |
885b9810 JH |
300 | echo "100644 $o1 0 d/e" |
301 | ) >expected && | |
3af82863 | 302 | test_cmp expected actual |
885b9810 JH |
303 | |
304 | ' | |
305 | ||
f2c8c800 | 306 | test_expect_success 'fail if the index has unresolved entries' ' |
446247db JH |
307 | |
308 | rm -fr [abcd] && | |
309 | git checkout -f "$c1" && | |
310 | ||
311 | test_must_fail git merge "$c5" && | |
312 | test_must_fail git merge "$c5" 2> out && | |
f2c8c800 | 313 | test_i18ngrep "not possible because you have unmerged files" out && |
d38a30df MM |
314 | git add -u && |
315 | test_must_fail git merge "$c5" 2> out && | |
f2c8c800 | 316 | test_i18ngrep "You have not concluded your merge" out && |
c8c562a2 CB |
317 | rm -f .git/MERGE_HEAD && |
318 | test_must_fail git merge "$c5" 2> out && | |
f2c8c800 | 319 | test_i18ngrep "Your local changes to the following files would be overwritten by merge:" out |
446247db JH |
320 | ' |
321 | ||
885b9810 JH |
322 | test_expect_success 'merge-recursive remove conflict' ' |
323 | ||
744747ef | 324 | rm -fr [abcd] && |
885b9810 JH |
325 | git checkout -f "$c1" && |
326 | ||
67b6afe1 | 327 | test_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c5" |
885b9810 JH |
328 | ' |
329 | ||
330 | test_expect_success 'merge-recursive remove conflict' ' | |
331 | ||
332 | git ls-files -s >actual && | |
333 | ( | |
885b9810 JH |
334 | echo "100644 $o0 1 a" |
335 | echo "100644 $o1 2 a" | |
336 | echo "100644 $o5 3 a" | |
744747ef | 337 | echo "100644 $o0 0 c" |
885b9810 JH |
338 | echo "100644 $o1 0 d/e" |
339 | ) >expected && | |
3af82863 | 340 | test_cmp expected actual |
885b9810 JH |
341 | |
342 | ' | |
343 | ||
344 | test_expect_success 'merge-recursive d/f simple' ' | |
744747ef | 345 | rm -fr [abcd] && |
885b9810 JH |
346 | git reset --hard && |
347 | git checkout -f "$c1" && | |
348 | ||
0cb0e143 | 349 | git merge-recursive "$c0" -- "$c1" "$c3" |
885b9810 JH |
350 | ' |
351 | ||
352 | test_expect_success 'merge-recursive result' ' | |
353 | ||
354 | git ls-files -s >actual && | |
355 | ( | |
885b9810 JH |
356 | echo "100644 $o1 0 a" |
357 | echo "100644 $o3 0 b/c" | |
744747ef | 358 | echo "100644 $o0 0 c" |
885b9810 JH |
359 | echo "100644 $o1 0 d/e" |
360 | ) >expected && | |
3af82863 | 361 | test_cmp expected actual |
885b9810 JH |
362 | |
363 | ' | |
364 | ||
365 | test_expect_success 'merge-recursive d/f conflict' ' | |
366 | ||
744747ef | 367 | rm -fr [abcd] && |
885b9810 JH |
368 | git reset --hard && |
369 | git checkout -f "$c1" && | |
370 | ||
67b6afe1 | 371 | test_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c4" |
885b9810 JH |
372 | ' |
373 | ||
374 | test_expect_success 'merge-recursive d/f conflict result' ' | |
375 | ||
376 | git ls-files -s >actual && | |
377 | ( | |
885b9810 JH |
378 | echo "100644 $o0 1 a" |
379 | echo "100644 $o1 2 a" | |
380 | echo "100644 $o4 0 a/c" | |
381 | echo "100644 $o0 0 b" | |
744747ef | 382 | echo "100644 $o0 0 c" |
885b9810 JH |
383 | echo "100644 $o1 0 d/e" |
384 | ) >expected && | |
3af82863 | 385 | test_cmp expected actual |
885b9810 JH |
386 | |
387 | ' | |
388 | ||
389 | test_expect_success 'merge-recursive d/f conflict the other way' ' | |
390 | ||
744747ef | 391 | rm -fr [abcd] && |
885b9810 JH |
392 | git reset --hard && |
393 | git checkout -f "$c4" && | |
394 | ||
67b6afe1 | 395 | test_expect_code 1 git merge-recursive "$c0" -- "$c4" "$c1" |
885b9810 JH |
396 | ' |
397 | ||
398 | test_expect_success 'merge-recursive d/f conflict result the other way' ' | |
399 | ||
400 | git ls-files -s >actual && | |
401 | ( | |
885b9810 JH |
402 | echo "100644 $o0 1 a" |
403 | echo "100644 $o1 3 a" | |
404 | echo "100644 $o4 0 a/c" | |
405 | echo "100644 $o0 0 b" | |
744747ef | 406 | echo "100644 $o0 0 c" |
885b9810 JH |
407 | echo "100644 $o1 0 d/e" |
408 | ) >expected && | |
3af82863 | 409 | test_cmp expected actual |
885b9810 JH |
410 | |
411 | ' | |
412 | ||
413 | test_expect_success 'merge-recursive d/f conflict' ' | |
414 | ||
744747ef | 415 | rm -fr [abcd] && |
885b9810 JH |
416 | git reset --hard && |
417 | git checkout -f "$c1" && | |
418 | ||
67b6afe1 | 419 | test_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c6" |
885b9810 JH |
420 | ' |
421 | ||
422 | test_expect_success 'merge-recursive d/f conflict result' ' | |
423 | ||
424 | git ls-files -s >actual && | |
425 | ( | |
885b9810 JH |
426 | echo "100644 $o1 0 a" |
427 | echo "100644 $o0 0 b" | |
744747ef | 428 | echo "100644 $o0 0 c" |
885b9810 JH |
429 | echo "100644 $o6 3 d" |
430 | echo "100644 $o0 1 d/e" | |
431 | echo "100644 $o1 2 d/e" | |
432 | ) >expected && | |
3af82863 | 433 | test_cmp expected actual |
885b9810 JH |
434 | |
435 | ' | |
436 | ||
437 | test_expect_success 'merge-recursive d/f conflict' ' | |
438 | ||
744747ef | 439 | rm -fr [abcd] && |
885b9810 JH |
440 | git reset --hard && |
441 | git checkout -f "$c6" && | |
442 | ||
67b6afe1 | 443 | test_expect_code 1 git merge-recursive "$c0" -- "$c6" "$c1" |
885b9810 JH |
444 | ' |
445 | ||
446 | test_expect_success 'merge-recursive d/f conflict result' ' | |
447 | ||
448 | git ls-files -s >actual && | |
449 | ( | |
885b9810 JH |
450 | echo "100644 $o1 0 a" |
451 | echo "100644 $o0 0 b" | |
744747ef | 452 | echo "100644 $o0 0 c" |
885b9810 JH |
453 | echo "100644 $o6 2 d" |
454 | echo "100644 $o0 1 d/e" | |
455 | echo "100644 $o1 3 d/e" | |
456 | ) >expected && | |
3af82863 | 457 | test_cmp expected actual |
885b9810 JH |
458 | |
459 | ' | |
460 | ||
461 | test_expect_success 'reset and 3-way merge' ' | |
462 | ||
463 | git reset --hard "$c2" && | |
464 | git read-tree -m "$c0" "$c2" "$c1" | |
465 | ||
466 | ' | |
467 | ||
468 | test_expect_success 'reset and bind merge' ' | |
469 | ||
470 | git reset --hard master && | |
471 | git read-tree --prefix=M/ master && | |
472 | git ls-files -s >actual && | |
473 | ( | |
885b9810 JH |
474 | echo "100644 $o1 0 M/a" |
475 | echo "100644 $o0 0 M/b" | |
744747ef | 476 | echo "100644 $o0 0 M/c" |
885b9810 JH |
477 | echo "100644 $o1 0 M/d/e" |
478 | echo "100644 $o1 0 a" | |
479 | echo "100644 $o0 0 b" | |
744747ef | 480 | echo "100644 $o0 0 c" |
885b9810 JH |
481 | echo "100644 $o1 0 d/e" |
482 | ) >expected && | |
3af82863 | 483 | test_cmp expected actual && |
885b9810 JH |
484 | |
485 | git read-tree --prefix=a1/ master && | |
486 | git ls-files -s >actual && | |
487 | ( | |
885b9810 JH |
488 | echo "100644 $o1 0 M/a" |
489 | echo "100644 $o0 0 M/b" | |
744747ef | 490 | echo "100644 $o0 0 M/c" |
885b9810 JH |
491 | echo "100644 $o1 0 M/d/e" |
492 | echo "100644 $o1 0 a" | |
885b9810 JH |
493 | echo "100644 $o1 0 a1/a" |
494 | echo "100644 $o0 0 a1/b" | |
744747ef | 495 | echo "100644 $o0 0 a1/c" |
885b9810 JH |
496 | echo "100644 $o1 0 a1/d/e" |
497 | echo "100644 $o0 0 b" | |
744747ef | 498 | echo "100644 $o0 0 c" |
885b9810 JH |
499 | echo "100644 $o1 0 d/e" |
500 | ) >expected && | |
a48fcd83 | 501 | test_cmp expected actual && |
885b9810 JH |
502 | |
503 | git read-tree --prefix=z/ master && | |
504 | git ls-files -s >actual && | |
505 | ( | |
885b9810 JH |
506 | echo "100644 $o1 0 M/a" |
507 | echo "100644 $o0 0 M/b" | |
744747ef | 508 | echo "100644 $o0 0 M/c" |
885b9810 JH |
509 | echo "100644 $o1 0 M/d/e" |
510 | echo "100644 $o1 0 a" | |
885b9810 JH |
511 | echo "100644 $o1 0 a1/a" |
512 | echo "100644 $o0 0 a1/b" | |
744747ef | 513 | echo "100644 $o0 0 a1/c" |
885b9810 JH |
514 | echo "100644 $o1 0 a1/d/e" |
515 | echo "100644 $o0 0 b" | |
744747ef | 516 | echo "100644 $o0 0 c" |
885b9810 | 517 | echo "100644 $o1 0 d/e" |
885b9810 JH |
518 | echo "100644 $o1 0 z/a" |
519 | echo "100644 $o0 0 z/b" | |
744747ef | 520 | echo "100644 $o0 0 z/c" |
885b9810 JH |
521 | echo "100644 $o1 0 z/d/e" |
522 | ) >expected && | |
3af82863 | 523 | test_cmp expected actual |
885b9810 JH |
524 | |
525 | ' | |
526 | ||
41f13af5 AR |
527 | test_expect_success 'merge removes empty directories' ' |
528 | ||
529 | git reset --hard master && | |
530 | git checkout -b rm && | |
531 | git rm d/e && | |
532 | git commit -mremoved-d/e && | |
533 | git checkout master && | |
534 | git merge -s recursive rm && | |
535 | test_must_fail test -d d | |
536 | ' | |
537 | ||
7d82b06d JS |
538 | test_expect_failure 'merge-recursive simple w/submodule' ' |
539 | ||
540 | git checkout submod && | |
541 | git merge remove | |
542 | ' | |
543 | ||
544 | test_expect_failure 'merge-recursive simple w/submodule result' ' | |
545 | ||
546 | git ls-files -s >actual && | |
547 | ( | |
548 | echo "100644 $o5 0 a" | |
549 | echo "100644 $o0 0 c" | |
550 | echo "160000 $c1 0 d" | |
551 | ) >expected && | |
552 | test_cmp expected actual | |
553 | ' | |
554 | ||
d5af5105 SK |
555 | test_expect_success 'merge-recursive copy vs. rename' ' |
556 | git checkout -f copy && | |
557 | git merge rename && | |
558 | ( git ls-tree -r HEAD && git ls-files -s ) >actual && | |
559 | ( | |
560 | echo "100644 blob $o0 b" | |
561 | echo "100644 blob $o0 c" | |
562 | echo "100644 blob $o0 d/e" | |
563 | echo "100644 blob $o0 e" | |
564 | echo "100644 $o0 0 b" | |
565 | echo "100644 $o0 0 c" | |
566 | echo "100644 $o0 0 d/e" | |
567 | echo "100644 $o0 0 e" | |
568 | ) >expected && | |
569 | test_cmp expected actual | |
570 | ' | |
571 | ||
8a1c0d32 SK |
572 | if test_have_prereq SYMLINKS |
573 | then | |
814f7d90 | 574 | test_expect_failure 'merge-recursive rename vs. rename/symlink' ' |
8a1c0d32 SK |
575 | |
576 | git checkout -f rename && | |
577 | git merge rename-ln && | |
578 | ( git ls-tree -r HEAD ; git ls-files -s ) >actual && | |
579 | ( | |
814f7d90 | 580 | echo "120000 blob $oln a" |
8a1c0d32 SK |
581 | echo "100644 blob $o0 b" |
582 | echo "100644 blob $o0 c" | |
583 | echo "100644 blob $o0 d/e" | |
584 | echo "100644 blob $o0 e" | |
814f7d90 | 585 | echo "120000 $oln 0 a" |
8a1c0d32 SK |
586 | echo "100644 $o0 0 b" |
587 | echo "100644 $o0 0 c" | |
588 | echo "100644 $o0 0 d/e" | |
589 | echo "100644 $o0 0 e" | |
590 | ) >expected && | |
591 | test_cmp expected actual | |
592 | ' | |
593 | fi | |
594 | ||
595 | ||
885b9810 | 596 | test_done |