diff options
author | David Aguilar <davvid@gmail.com> | 2016-03-09 23:13:59 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-03-10 14:07:57 -0800 |
commit | a2986045e3da24c850da03eaf2f2e2a56f8d4fff (patch) | |
tree | 8b2750e30dceb0fcd1b28522c7923a6397c12e74 | |
parent | mergetool: support delete/delete conflicts (diff) | |
download | tgif-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-x | git-mergetool.sh | 11 | ||||
-rwxr-xr-x | t/t7610-mergetool.sh | 25 |
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 ' |