diff options
| author | Junio C Hamano <gitster@pobox.com> | 2016-04-14 18:57:47 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2016-04-14 18:57:47 -0700 |
| commit | 517736ffcf7e0a81cef938987b4cc4ed82b3408f (patch) | |
| tree | 0122a67b9b27001af213c1e6c194307d4a97005e /git-mergetool.sh | |
| parent | 237e6db5c08b095d84d352206e6dcd332fbfca5a (diff) | |
| parent | a2986045e3da24c850da03eaf2f2e2a56f8d4fff (diff) | |
| download | git-517736ffcf7e0a81cef938987b4cc4ed82b3408f.tar.xz | |
Merge branch 'da/mergetool-delete-delete-conflict' into maint
"git mergetool" did not work well with conflicts that both sides
deleted.
* da/mergetool-delete-delete-conflict:
mergetool: honor tempfile configuration when resolving delete conflicts
mergetool: support delete/delete conflicts
Diffstat (limited to 'git-mergetool.sh')
| -rwxr-xr-x | git-mergetool.sh | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/git-mergetool.sh b/git-mergetool.sh index 9f77e3a8bb..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 @@ -282,8 +291,14 @@ merge_file () { return fi - mv -- "$MERGED" "$BACKUP" - cp -- "$BACKUP" "$MERGED" + if test -f "$MERGED" + then + mv -- "$MERGED" "$BACKUP" + cp -- "$BACKUP" "$MERGED" + fi + # Create a parent directory to handle delete/delete conflicts + # where the base's directory no longer exists. + mkdir -p "$(dirname "$MERGED")" checkout_staged_file 1 "$MERGED" "$BASE" checkout_staged_file 2 "$MERGED" "$LOCAL" @@ -295,7 +310,9 @@ merge_file () { describe_file "$local_mode" "local" "$LOCAL" describe_file "$remote_mode" "remote" "$REMOTE" resolve_deleted_merge - return + status=$? + rmdir -p "$(dirname "$MERGED")" 2>/dev/null + return $status fi if is_symlink "$local_mode" || is_symlink "$remote_mode" |
