summaryrefslogtreecommitdiff
path: root/mergetools
diff options
context:
space:
mode:
Diffstat (limited to 'mergetools')
-rw-r--r--mergetools/p4merge24
-rw-r--r--mergetools/tortoisemerge25
2 files changed, 45 insertions, 4 deletions
diff --git a/mergetools/p4merge b/mergetools/p4merge
index 1a45c1b0c5..52f7c8f705 100644
--- a/mergetools/p4merge
+++ b/mergetools/p4merge
@@ -1,5 +1,22 @@
diff_cmd () {
+ empty_file=
+
+ # p4merge does not like /dev/null
+ if test "/dev/null" = "$LOCAL"
+ then
+ LOCAL="$(create_empty_file)"
+ fi
+ if test "/dev/null" = "$REMOTE"
+ then
+ REMOTE="$(create_empty_file)"
+ fi
+
"$merge_tool_path" "$LOCAL" "$REMOTE"
+
+ if test -n "$empty_file"
+ then
+ rm -f "$empty_file"
+ fi
}
merge_cmd () {
@@ -8,3 +25,10 @@ merge_cmd () {
"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
check_unchanged
}
+
+create_empty_file () {
+ empty_file="${TMPDIR:-/tmp}/git-difftool-p4merge-empty-file.$$"
+ >"$empty_file"
+
+ printf "$empty_file"
+}
diff --git a/mergetools/tortoisemerge b/mergetools/tortoisemerge
index ed7db495ed..3b89f1c82d 100644
--- a/mergetools/tortoisemerge
+++ b/mergetools/tortoisemerge
@@ -6,12 +6,29 @@ merge_cmd () {
if $base_present
then
touch "$BACKUP"
- "$merge_tool_path" \
- -base:"$BASE" -mine:"$LOCAL" \
- -theirs:"$REMOTE" -merged:"$MERGED"
+ basename="$(basename "$merge_tool_path" .exe)"
+ if test "$basename" = "tortoisegitmerge"
+ then
+ "$merge_tool_path" \
+ -base "$BASE" -mine "$LOCAL" \
+ -theirs "$REMOTE" -merged "$MERGED"
+ else
+ "$merge_tool_path" \
+ -base:"$BASE" -mine:"$LOCAL" \
+ -theirs:"$REMOTE" -merged:"$MERGED"
+ fi
check_unchanged
else
- echo "TortoiseMerge cannot be used without a base" 1>&2
+ echo "$merge_tool_path cannot be used without a base" 1>&2
return 1
fi
}
+
+translate_merge_tool_path() {
+ if type tortoisegitmerge >/dev/null 2>/dev/null
+ then
+ echo tortoisegitmerge
+ else
+ echo tortoisemerge
+ fi
+}