aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-11-18 19:31:40 -0800
committerJunio C Hamano <gitster@pobox.com>2012-11-18 19:31:40 -0800
commit6c95f535e909b91d3c8868f00196c85c61fe8142 (patch)
tree5b3e7cec784951a0acdb4c58caa8507cb2383cef
parent3424da1118786209f7ac41dd273e72a081421cd3 (diff)
parent3facc60031a5b860cae8cb26957e5b4e80820c34 (diff)
downloadgit-6c95f535e909b91d3c8868f00196c85c61fe8142.tar.gz
git-6c95f535e909b91d3c8868f00196c85c61fe8142.tar.xz
Merge branch 'da/mergetools-p4' into maint
"git mergetool" feeds /dev/null as a common ancestor when dealing with an add/add conflict, but p4merge backend cannot handle it. Work it around by passing a temporary empty file. * da/mergetools-p4: mergetools/p4merge: Handle "/dev/null"
-rw-r--r--mergetools/p4merge25
1 files changed, 25 insertions, 0 deletions
diff --git a/mergetools/p4merge b/mergetools/p4merge
index 1a45c1b0c..295361a8a 100644
--- a/mergetools/p4merge
+++ b/mergetools/p4merge
@@ -1,5 +1,30 @@
diff_cmd () {
+ # p4merge does not like /dev/null
+ rm_local=
+ rm_remote=
+ if test "/dev/null" = "$LOCAL"
+ then
+ LOCAL="./p4merge-dev-null.LOCAL.$$"
+ >"$LOCAL"
+ rm_local=true
+ fi
+ if test "/dev/null" = "$REMOTE"
+ then
+ REMOTE="./p4merge-dev-null.REMOTE.$$"
+ >"$REMOTE"
+ rm_remote=true
+ fi
+
"$merge_tool_path" "$LOCAL" "$REMOTE"
+
+ if test -n "$rm_local"
+ then
+ rm -f "$LOCAL"
+ fi
+ if test -n "$rm_remote"
+ then
+ rm -f "$REMOTE"
+ fi
}
merge_cmd () {