about summary refs log tree commit diff
path: root/mergetools/p4merge
diff options
context:
space:
mode:
authorVincent Ambo <Vincent Ambo>2020-01-11T23·36+0000
committerVincent Ambo <Vincent Ambo>2020-01-11T23·36+0000
commit1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 (patch)
treee3accb9beed5c4c1b5a05c99db71ab2841f0ed04 /mergetools/p4merge
Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git
git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
Diffstat (limited to 'mergetools/p4merge')
-rw-r--r--mergetools/p4merge36
1 files changed, 36 insertions, 0 deletions
diff --git a/mergetools/p4merge b/mergetools/p4merge
new file mode 100644
index 000000000000..7a5b291dd28a
--- /dev/null
+++ b/mergetools/p4merge
@@ -0,0 +1,36 @@
+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 () {
+	if ! $base_present
+	then
+		cp -- "$LOCAL" "$BASE"
+		create_virtual_base "$BASE" "$REMOTE"
+	fi
+	"$merge_tool_path" "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
+}
+
+create_empty_file () {
+	empty_file="${TMPDIR:-/tmp}/git-difftool-p4merge-empty-file.$$"
+	>"$empty_file"
+
+	printf "%s" "$empty_file"
+}