mergetool: honor tempfile configuration when resolving delete conflicts
Teach resolve_deleted_merge() to honor the mergetool.keepBackup and mergetool.keepTemporaries configuration knobs. This ensures that the worktree is kept pristine when resolving deletion conflicts with the variables both set to false. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
faaab8d571
commit
a2986045e3
@ -126,7 +126,12 @@ resolve_deleted_merge () {
|
|||||||
case "$ans" in
|
case "$ans" in
|
||||||
[mMcC]*)
|
[mMcC]*)
|
||||||
git add -- "$MERGED"
|
git add -- "$MERGED"
|
||||||
cleanup_temp_files --save-backup
|
if test "$merge_keep_backup" = "true"
|
||||||
|
then
|
||||||
|
cleanup_temp_files --save-backup
|
||||||
|
else
|
||||||
|
cleanup_temp_files
|
||||||
|
fi
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
[dD]*)
|
[dD]*)
|
||||||
@ -135,6 +140,10 @@ resolve_deleted_merge () {
|
|||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
[aA]*)
|
[aA]*)
|
||||||
|
if test "$merge_keep_temporaries" = "false"
|
||||||
|
then
|
||||||
|
cleanup_temp_files
|
||||||
|
fi
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -279,6 +279,31 @@ test_expect_success 'mergetool produces no errors when keepBackup is used' '
|
|||||||
: >expect &&
|
: >expect &&
|
||||||
echo d | git mergetool a/a/file.txt 2>actual &&
|
echo d | git mergetool a/a/file.txt 2>actual &&
|
||||||
test_cmp expect actual &&
|
test_cmp expect actual &&
|
||||||
|
! test -d a &&
|
||||||
|
git reset --hard HEAD
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'mergetool honors tempfile config for deleted files' '
|
||||||
|
test_config mergetool.keepTemporaries false &&
|
||||||
|
test_must_fail git merge move-to-b &&
|
||||||
|
echo d | git mergetool a/a/file.txt &&
|
||||||
|
! test -d a &&
|
||||||
|
git reset --hard HEAD
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'mergetool keeps tempfiles when aborting delete/delete' '
|
||||||
|
test_config mergetool.keepTemporaries true &&
|
||||||
|
test_must_fail git merge move-to-b &&
|
||||||
|
! (echo a; echo n) | git mergetool a/a/file.txt &&
|
||||||
|
test -d a/a &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
file_BASE_.txt
|
||||||
|
file_LOCAL_.txt
|
||||||
|
file_REMOTE_.txt
|
||||||
|
EOF
|
||||||
|
ls -1 a/a | sed -e "s/[0-9]*//g" >actual &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
git clean -fdx &&
|
||||||
git reset --hard HEAD
|
git reset --hard HEAD
|
||||||
'
|
'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user