summaryrefslogtreecommitdiff
path: root/mergetools/p4merge
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2012-11-18 19:31:40 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-11-18 19:31:40 -0800
commit6c95f535e909b91d3c8868f00196c85c61fe8142 (patch)
tree5b3e7cec784951a0acdb4c58caa8507cb2383cef /mergetools/p4merge
parentMerge branch 'jc/test-say-color-avoid-echo-escape' into maint (diff)
parentmergetools/p4merge: Handle "/dev/null" (diff)
downloadtgif-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"
Diffstat (limited to 'mergetools/p4merge')
-rw-r--r--mergetools/p4merge25
1 files changed, 25 insertions, 0 deletions
diff --git a/mergetools/p4merge b/mergetools/p4merge
index 1a45c1b0c5..295361a8aa 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 () {