summaryrefslogtreecommitdiff
path: root/mergetools/p4merge
diff options
context:
space:
mode:
Diffstat (limited to 'mergetools/p4merge')
-rw-r--r--mergetools/p4merge32
1 files changed, 30 insertions, 2 deletions
diff --git a/mergetools/p4merge b/mergetools/p4merge
index 1a45c1b0c5..5a608abf9c 100644
--- a/mergetools/p4merge
+++ b/mergetools/p4merge
@@ -1,10 +1,38 @@
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 () {
touch "$BACKUP"
- $base_present || >"$BASE"
- "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
+ if ! $base_present
+ then
+ cp -- "$LOCAL" "$BASE"
+ create_virtual_base "$BASE" "$REMOTE"
+ fi
+ "$merge_tool_path" "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
check_unchanged
}
+
+create_empty_file () {
+ empty_file="${TMPDIR:-/tmp}/git-difftool-p4merge-empty-file.$$"
+ >"$empty_file"
+
+ printf "%s" "$empty_file"
+}