summaryrefslogtreecommitdiff
path: root/mergetools/p4merge
diff options
context:
space:
mode:
Diffstat (limited to 'mergetools/p4merge')
-rw-r--r--mergetools/p4merge38
1 files changed, 38 insertions, 0 deletions
diff --git a/mergetools/p4merge b/mergetools/p4merge
new file mode 100644
index 0000000000..5a608abf9c
--- /dev/null
+++ b/mergetools/p4merge
@@ -0,0 +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"
+ 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"
+}