@ -10,17 +10,17 @@ merge_mode() {
translate_merge_tool_path () {
translate_merge_tool_path () {
case "$1" in
case "$1" in
vimdiff|vimdiff2)
araxis)
echo vim
echo compare
;;
gvimdiff|gvimdiff2)
echo gvim
;;
;;
emerge)
emerge)
echo emacs
echo emacs
;;
;;
araxis)
gvimdiff|gvimdiff2)
echo compare
echo gvim
;;
vimdiff|vimdiff2)
echo vim
;;
;;
*)
*)
echo "$1"
echo "$1"
@ -46,17 +46,16 @@ check_unchanged () {
valid_tool () {
valid_tool () {
case "$1" in
case "$1" in
kdiff3 | tkdiff | xxdiff | meld | opendiff | \
araxis | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \
vimdiff | gvimdiff | vimdiff2 | gvimdiff2 | \
kdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | vimdiff2 | xxdiff)
emerge | ecmerge | diffuse | araxis | p4merge)
;; # happy
;; # happy
tortoisemerge)
kompare)
if ! merge_mode; then
if ! diff_mode; then
return 1
return 1
fi
fi
;;
;;
kompare)
tortoisemerge)
if ! diff_mode; then
if ! merge_mode; then
return 1
return 1
fi
fi
;;
;;
@ -89,88 +88,76 @@ run_merge_tool () {
status=0
status=0
case "$1" in
case "$1" in
kdiff3)
araxis)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
if $base_present; then
if $base_present; then
("$merge_tool_path" --auto \
"$merge_tool_path" -wait -merge -3 -a1 \
--L1 "$MERGED (Base)" \
"$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
--L2 "$MERGED (Local)" \
>/dev/null 2>&1
--L3 "$MERGED (Remote)" \
-o "$MERGED" \
"$BASE" "$LOCAL" "$REMOTE" \
> /dev/null 2>&1)
else
else
("$merge_tool_path" --auto \
"$merge_tool_path" -wait -2 \
--L1 "$MERGED (Local)" \
"$LOCAL" "$REMOTE" "$MERGED" \
--L2 "$MERGED (Remote)" \
>/dev/null 2>&1
-o "$MERGED" \
"$LOCAL" "$REMOTE" \
> /dev/null 2>&1)
fi
fi
status=$?
check_unchanged
else
else
("$merge_tool_path" --auto \
"$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
--L1 "$MERGED (A)" \
>/dev/null 2>&1
--L2 "$MERGED (B)" "$LOCAL" "$REMOTE" \
> /dev/null 2>&1)
fi
fi
;;
;;
kompare)
diffuse)
"$merge_tool_path" "$LOCAL" "$REMOTE"
;;
tkdiff)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
if $base_present; then
if $base_present; then
"$merge_tool_path" -a "$BASE" \
"$merge_tool_path" \
-o "$MERGED" "$LOCAL" "$REMOTE"
"$LOCAL" "$MERGED" "$REMOTE" \
"$BASE" | cat
else
else
"$merge_tool_path" \
"$merge_tool_path" \
-o "$MERGED" "$LOCAL" "$REMOTE"
"$LOCAL" "$MERGED" "$REMOTE" | cat
fi
fi
status=$?
check_unchanged
else
else
"$merge_tool_path" "$LOCAL" "$REMOTE"
"$merge_tool_path" "$LOCAL" "$REMOTE" | cat
fi
fi
;;
;;
p4merge)
ecmerge)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
touch "$BACKUP"
if $base_present; then
if $base_present; then
"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" \
--default --mode=merge3 --to="$MERGED"
else
else
"$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
"$merge_tool_path" "$LOCAL" "$REMOTE" \
--default --mode=merge2 --to="$MERGED"
fi
fi
check_unchanged
check_unchanged
else
else
"$merge_tool_path" "$LOCAL" "$REMOTE"
"$merge_tool_path" --default --mode=diff2 \
fi
"$LOCAL" "$REMOTE"
;;
meld)
if merge_mode; then
touch "$BACKUP"
"$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
check_unchanged
else
"$merge_tool_path" "$LOCAL" "$REMOTE"
fi
fi
;;
;;
diffuse)
emerge)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
if $base_present; then
if $base_present; then
"$merge_tool_path" \
"$merge_tool_path" \
"$LOCAL" "$MERGED" "$REMOTE" \
-f emerge-files-with-ancestor-command \
"$BASE" | cat
"$LOCAL" "$REMOTE" "$BASE" \
"$(basename "$MERGED")"
else
else
"$merge_tool_path" \
"$merge_tool_path" \
"$LOCAL" "$MERGED" "$REMOTE" | cat
-f emerge-files-command \
"$LOCAL" "$REMOTE" \
"$(basename "$MERGED")"
fi
fi
check_unchanged
status=$?
else
else
"$merge_tool_path" "$LOCAL" "$REMOTE" | cat
"$merge_tool_path" -f emerge-files-command \
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
vimdiff|gvimdiff)
gvimdiff|vimdiff)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
touch "$BACKUP"
if $base_present; then
if $base_present; then
@ -186,7 +173,7 @@ run_merge_tool () {
"$LOCAL" "$REMOTE"
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
vimdiff2|gvimdiff2)
gvimdiff2|vimdiff2)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
touch "$BACKUP"
"$merge_tool_path" -f -d -c "wincmd l" \
"$merge_tool_path" -f -d -c "wincmd l" \
@ -197,30 +184,42 @@ run_merge_tool () {
"$LOCAL" "$REMOTE"
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
xxdiff)
kdiff3)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
if $base_present; then
if $base_present; then
"$merge_tool_path" -X --show-merged-pane \
("$merge_tool_path" --auto \
-R 'Accel.SaveAsMerged: "Ctrl-S"' \
--L1 "$MERGED (Base)" \
-R 'Accel.Search: "Ctrl+F"' \
--L2 "$MERGED (Local)" \
-R 'Accel.SearchForward: "Ctrl-G"' \
--L3 "$MERGED (Remote)" \
--merged-file "$MERGED" \
-o "$MERGED" \
"$LOCAL" "$BASE" "$REMOTE"
"$BASE" "$LOCAL" "$REMOTE" \
> /dev/null 2>&1)
else
else
"$merge_tool_path" -X $extra \
("$merge_tool_path" --auto \
-R 'Accel.SaveAsMerged: "Ctrl-S"' \
--L1 "$MERGED (Local)" \
-R 'Accel.Search: "Ctrl+F"' \
--L2 "$MERGED (Remote)" \
-R 'Accel.SearchForward: "Ctrl-G"' \
-o "$MERGED" \
--merged-file "$MERGED" \
"$LOCAL" "$REMOTE" \
"$LOCAL" "$REMOTE"
> /dev/null 2>&1)
fi
fi
status=$?
else
("$merge_tool_path" --auto \
--L1 "$MERGED (A)" \
--L2 "$MERGED (B)" "$LOCAL" "$REMOTE" \
> /dev/null 2>&1)
fi
;;
kompare)
"$merge_tool_path" "$LOCAL" "$REMOTE"
;;
meld)
if merge_mode; then
touch "$BACKUP"
"$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
check_unchanged
check_unchanged
else
else
"$merge_tool_path" \
"$merge_tool_path" "$LOCAL" "$REMOTE"
-R 'Accel.Search: "Ctrl+F"' \
-R 'Accel.SearchForward: "Ctrl-G"' \
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
opendiff)
opendiff)
@ -239,39 +238,31 @@ run_merge_tool () {
"$merge_tool_path" "$LOCAL" "$REMOTE" | cat
"$merge_tool_path" "$LOCAL" "$REMOTE" | cat
fi
fi
;;
;;
ecmerge)
p4merge)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
touch "$BACKUP"
if $base_present; then
if $base_present; then
"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" \
"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
--default --mode=merge3 --to="$MERGED"
else
else
"$merge_tool_path" "$LOCAL" "$REMOTE" \
"$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
--default --mode=merge2 --to="$MERGED"
fi
fi
check_unchanged
check_unchanged
else
else
"$merge_tool_path" --default --mode=diff2 \
"$merge_tool_path" "$LOCAL" "$REMOTE"
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
emerge)
tkdiff)
if merge_mode; then
if merge_mode; then
if $base_present; then
if $base_present; then
"$merge_tool_path" \
"$merge_tool_path" -a "$BASE" \
-f emerge-files-with-ancestor-command \
-o "$MERGED" "$LOCAL" "$REMOTE"
"$LOCAL" "$REMOTE" "$BASE" \
"$(basename "$MERGED")"
else
else
"$merge_tool_path" \
"$merge_tool_path" \
-f emerge-files-command \
-o "$MERGED" "$LOCAL" "$REMOTE"
"$LOCAL" "$REMOTE" \
"$(basename "$MERGED")"
fi
fi
status=$?
status=$?
else
else
"$merge_tool_path" -f emerge-files-command \
"$merge_tool_path" "$LOCAL" "$REMOTE"
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
tortoisemerge)
tortoisemerge)
@ -286,22 +277,30 @@ run_merge_tool () {
status=1
status=1
fi
fi
;;
;;
araxis)
xxdiff)
if merge_mode; then
if merge_mode; then
touch "$BACKUP"
touch "$BACKUP"
if $base_present; then
if $base_present; then
"$merge_tool_path" -wait -merge -3 -a1 \
"$merge_tool_path" -X --show-merged-pane \
"$BASE" "$LOCAL" "$REMOTE" "$MERGED" \
-R 'Accel.SaveAsMerged: "Ctrl-S"' \
>/dev/null 2>&1
-R 'Accel.Search: "Ctrl+F"' \
-R 'Accel.SearchForward: "Ctrl-G"' \
--merged-file "$MERGED" \
"$LOCAL" "$BASE" "$REMOTE"
else
else
"$merge_tool_path" -wait -2 \
"$merge_tool_path" -X $extra \
"$LOCAL" "$REMOTE" "$MERGED" \
-R 'Accel.SaveAsMerged: "Ctrl-S"' \
>/dev/null 2>&1
-R 'Accel.Search: "Ctrl+F"' \
-R 'Accel.SearchForward: "Ctrl-G"' \
--merged-file "$MERGED" \
"$LOCAL" "$REMOTE"
fi
fi
check_unchanged
check_unchanged
else
else
"$merge_tool_path" -wait -2 "$LOCAL" "$REMOTE" \
"$merge_tool_path" \
>/dev/null 2>&1
-R 'Accel.Search: "Ctrl+F"' \
-R 'Accel.SearchForward: "Ctrl-G"' \
"$LOCAL" "$REMOTE"
fi
fi
;;
;;
*)
*)