@@ -243,6 +243,70 @@ test_expect_success 'mergetool takes partial path' '
243
243
git reset --hard
244
244
'
245
245
246
+ test_expect_success ' mergetool delete/delete conflict' '
247
+ git checkout -b delete-base branch1 &&
248
+ mkdir -p a/a &&
249
+ (echo one; echo two; echo 3; echo 4) >a/a/file.txt &&
250
+ git add a/a/file.txt &&
251
+ git commit -m"base file" &&
252
+ git checkout -b move-to-b delete-base &&
253
+ mkdir -p b/b &&
254
+ git mv a/a/file.txt b/b/file.txt &&
255
+ (echo one; echo two; echo 4) >b/b/file.txt &&
256
+ git commit -a -m"move to b" &&
257
+ git checkout -b move-to-c delete-base &&
258
+ mkdir -p c/c &&
259
+ git mv a/a/file.txt c/c/file.txt &&
260
+ (echo one; echo two; echo 3) >c/c/file.txt &&
261
+ git commit -a -m"move to c" &&
262
+ test_must_fail git merge move-to-b &&
263
+ echo d | git mergetool a/a/file.txt &&
264
+ ! test -f a/a/file.txt &&
265
+ git reset --hard HEAD &&
266
+ test_must_fail git merge move-to-b &&
267
+ echo m | git mergetool a/a/file.txt &&
268
+ test -f b/b/file.txt &&
269
+ git reset --hard HEAD &&
270
+ test_must_fail git merge move-to-b &&
271
+ ! echo a | git mergetool a/a/file.txt &&
272
+ ! test -f a/a/file.txt &&
273
+ git reset --hard HEAD
274
+ '
275
+
276
+ test_expect_success ' mergetool produces no errors when keepBackup is used' '
277
+ test_config mergetool.keepBackup true &&
278
+ test_must_fail git merge move-to-b &&
279
+ : >expect &&
280
+ echo d | git mergetool a/a/file.txt 2>actual &&
281
+ test_cmp expect actual &&
282
+ ! test -d a &&
283
+ git reset --hard HEAD
284
+ '
285
+
286
+ test_expect_success ' mergetool honors tempfile config for deleted files' '
287
+ test_config mergetool.keepTemporaries false &&
288
+ test_must_fail git merge move-to-b &&
289
+ echo d | git mergetool a/a/file.txt &&
290
+ ! test -d a &&
291
+ git reset --hard HEAD
292
+ '
293
+
294
+ test_expect_success ' mergetool keeps tempfiles when aborting delete/delete' '
295
+ test_config mergetool.keepTemporaries true &&
296
+ test_must_fail git merge move-to-b &&
297
+ ! (echo a; echo n) | git mergetool a/a/file.txt &&
298
+ test -d a/a &&
299
+ cat >expect <<-\EOF &&
300
+ file_BASE_.txt
301
+ file_LOCAL_.txt
302
+ file_REMOTE_.txt
303
+ EOF
304
+ ls -1 a/a | sed -e "s/[0-9]*//g" >actual &&
305
+ test_cmp expect actual &&
306
+ git clean -fdx &&
307
+ git reset --hard HEAD
308
+ '
309
+
246
310
test_expect_success ' deleted vs modified submodule' '
247
311
git checkout -b test6 branch1 &&
248
312
git submodule update -N &&
0 commit comments