@ -127,18 +127,6 @@ check_unchanged () {
fi
fi
}
}
save_backup () {
if test "$status" -eq 0; then
mv -- "$BACKUP" "$path.orig"
fi
}
remove_backup () {
if test "$status" -eq 0; then
rm "$BACKUP"
fi
}
merge_file () {
merge_file () {
path="$1"
path="$1"
@ -201,7 +189,6 @@ merge_file () {
-o "$path" -- "$LOCAL" "$REMOTE" > /dev/null 2>&1)
-o "$path" -- "$LOCAL" "$REMOTE" > /dev/null 2>&1)
fi
fi
status=$?
status=$?
remove_backup
;;
;;
tkdiff)
tkdiff)
if base_present ; then
if base_present ; then
@ -210,20 +197,17 @@ merge_file () {
"$merge_tool_path" -o "$path" -- "$LOCAL" "$REMOTE"
"$merge_tool_path" -o "$path" -- "$LOCAL" "$REMOTE"
fi
fi
status=$?
status=$?
save_backup
;;
;;
meld|vimdiff)
meld|vimdiff)
touch "$BACKUP"
touch "$BACKUP"
"$merge_tool_path" -- "$LOCAL" "$path" "$REMOTE"
"$merge_tool_path" -- "$LOCAL" "$path" "$REMOTE"
check_unchanged
check_unchanged
save_backup
;;
;;
gvimdiff)
gvimdiff)
touch "$BACKUP"
touch "$BACKUP"
"$merge_tool_path" -f -- "$LOCAL" "$path" "$REMOTE"
"$merge_tool_path" -f -- "$LOCAL" "$path" "$REMOTE"
check_unchanged
check_unchanged
save_backup
;;
;;
xxdiff)
xxdiff)
touch "$BACKUP"
touch "$BACKUP"
if base_present ; then
if base_present ; then
@ -240,7 +224,6 @@ merge_file () {
--merged-file "$path" -- "$LOCAL" "$REMOTE"
--merged-file "$path" -- "$LOCAL" "$REMOTE"
fi
fi
check_unchanged
check_unchanged
save_backup
;;
;;
opendiff)
opendiff)
touch "$BACKUP"
touch "$BACKUP"
@ -250,7 +233,6 @@ merge_file () {
"$merge_tool_path" "$LOCAL" "$REMOTE" -merge "$path" | cat
"$merge_tool_path" "$LOCAL" "$REMOTE" -merge "$path" | cat
fi
fi
check_unchanged
check_unchanged
save_backup
;;
;;
ecmerge)
ecmerge)
touch "$BACKUP"
touch "$BACKUP"
@ -260,7 +242,6 @@ merge_file () {
"$merge_tool_path" "$LOCAL" "$REMOTE" --mode=merge2 --to="$path"
"$merge_tool_path" "$LOCAL" "$REMOTE" --mode=merge2 --to="$path"
fi
fi
check_unchanged
check_unchanged
save_backup
;;
;;
emerge)
emerge)
if base_present ; then
if base_present ; then
@ -269,7 +250,6 @@ merge_file () {
"$merge_tool_path" -f emerge-files-command "$LOCAL" "$REMOTE" "$(basename "$path")"
"$merge_tool_path" -f emerge-files-command "$LOCAL" "$REMOTE" "$(basename "$path")"
fi
fi
status=$?
status=$?
save_backup
;;
;;
esac
esac
if test "$status" -ne 0; then
if test "$status" -ne 0; then
@ -277,6 +257,13 @@ merge_file () {
mv -- "$BACKUP" "$path"
mv -- "$BACKUP" "$path"
exit 1
exit 1
fi
fi
if test "$merge_keep_backup" = "true"; then
mv -- "$BACKUP" "$path.orig"
else
rm -- "$BACKUP"
fi
git add -- "$path"
git add -- "$path"
cleanup_temp_files
cleanup_temp_files
}
}
@ -380,6 +367,8 @@ else
init_merge_tool_path "$merge_tool"
init_merge_tool_path "$merge_tool"
merge_keep_backup="$(git config --bool merge.keepBackup || echo true)"
if ! type "$merge_tool_path" > /dev/null 2>&1; then
if ! type "$merge_tool_path" > /dev/null 2>&1; then
echo "The merge tool $merge_tool is not available as '$merge_tool_path'"
echo "The merge tool $merge_tool is not available as '$merge_tool_path'"
exit 1
exit 1