summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar David Aguilar <davvid@gmail.com>2016-03-09 23:13:59 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-03-10 14:07:57 -0800
commita2986045e3da24c850da03eaf2f2e2a56f8d4fff (patch)
tree8b2750e30dceb0fcd1b28522c7923a6397c12e74
parentmergetool: support delete/delete conflicts (diff)
downloadtgif-a2986045e3da24c850da03eaf2f2e2a56f8d4fff.tar.xz
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>
-rwxr-xr-xgit-mergetool.sh11
-rwxr-xr-xt/t7610-mergetool.sh25
2 files changed, 35 insertions, 1 deletions
diff --git a/git-mergetool.sh b/git-mergetool.sh
index b06ae78739..f67bab55e8 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -126,7 +126,12 @@ resolve_deleted_merge () {
case "$ans" in
[mMcC]*)
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
;;
[dD]*)
@@ -135,6 +140,10 @@ resolve_deleted_merge () {
return 0
;;
[aA]*)
+ if test "$merge_keep_temporaries" = "false"
+ then
+ cleanup_temp_files
+ fi
return 1
;;
esac
diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh
index 39469d96d4..76306cf268 100755
--- a/t/t7610-mergetool.sh
+++ b/t/t7610-mergetool.sh
@@ -279,6 +279,31 @@ test_expect_success 'mergetool produces no errors when keepBackup is used' '
: >expect &&
echo d | git mergetool a/a/file.txt 2>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
'