pack_refs(): change to use do_for_each_entry()
[gitweb.git] / mergetools / p4merge
index 1a45c1b0c5128335fc340e7d6409b4e772419a07..8a36916567a234c354af9994df9c28788749e7fa 100644 (file)
@@ -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 "%s" "$empty_file"
+}