diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-03-03 15:15:45 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-03-03 15:15:45 +0900 |
commit | 6bb0b9cc74dd2e64cd265af6abee0943e369730a (patch) | |
tree | 339eca7763290c32a8f711a5b63103f6d312855d /git-mergetool.sh | |
parent | 915024c5dd819582bc8c77107936830455a52b42 (diff) | |
download | git-6bb0b9cc74dd2e64cd265af6abee0943e369730a.tar.gz git-6bb0b9cc74dd2e64cd265af6abee0943e369730a.tar.bz2 git-6bb0b9cc74dd2e64cd265af6abee0943e369730a.zip |
Imported Upstream version 2.8.2upstream/2.8.2
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 9f77e3a8..f67bab55 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" |