mergetools/p4merge: Honor $TMPDIR for the /dev/null placeholder
Use $TMPDIR when creating the /dev/null placeholder for p4merge. This prevents users from finding a seemingly random untracked file in their worktree. This is different than what mergetool does with $LOCAL and $REMOTE because those files exist to aid users when resolving merges. p4merge's /dev/null placeholder is not helpful in that situation so it is sensible to keep it out of the worktree. Reported-by: Jeremy Morton <admin@game-point.net> Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
18499ba694
commit
950b5680bd
@ -1,29 +1,21 @@
|
||||
diff_cmd () {
|
||||
empty_file=
|
||||
|
||||
# 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
|
||||
LOCAL="$(create_empty_file)"
|
||||
fi
|
||||
if test "/dev/null" = "$REMOTE"
|
||||
then
|
||||
REMOTE="./p4merge-dev-null.REMOTE.$$"
|
||||
>"$REMOTE"
|
||||
rm_remote=true
|
||||
REMOTE="$(create_empty_file)"
|
||||
fi
|
||||
|
||||
"$merge_tool_path" "$LOCAL" "$REMOTE"
|
||||
|
||||
if test -n "$rm_local"
|
||||
if test -n "$empty_file"
|
||||
then
|
||||
rm -f "$LOCAL"
|
||||
fi
|
||||
if test -n "$rm_remote"
|
||||
then
|
||||
rm -f "$REMOTE"
|
||||
rm -f "$empty_file"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -33,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 "$empty_file"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user