USAGE='<orig blob> <our blob> <their blob> <path>'
USAGE="$USAGE <orig mode> <our mode> <their mode>"
-LONG_USAGE="Usage: git merge-one-file $USAGE
+LONG_USAGE="usage: git merge-one-file $USAGE
Blob ids and modes should be empty for missing files."
echo "Adding $4"
if test -f "$4"
then
- echo "ERROR: untracked $4 is overwritten by the merge."
+ echo "ERROR: untracked $4 is overwritten by the merge." >&2
exit 1
fi
git update-index --add --cacheinfo "$7" "$3" "$4" &&
".$3$2")
if test "$6" != "$7"
then
- echo "ERROR: File $4 added identically in both branches,"
- echo "ERROR: but permissions conflict $6->$7."
+ echo "ERROR: File $4 added identically in both branches," >&2
+ echo "ERROR: but permissions conflict $6->$7." >&2
exit 1
fi
echo "Adding $4"
case ",$6,$7," in
*,120000,*)
- echo "ERROR: $4: Not merging symbolic link changes."
+ echo "ERROR: $4: Not merging symbolic link changes." >&2
exit 1
;;
*,160000,*)
- echo "ERROR: $4: Not merging conflicting submodule changes."
+ echo "ERROR: $4: Not merging conflicting submodule changes." >&2
exit 1
;;
esac
git merge-file "$src1" "$orig" "$src2"
ret=$?
msg=
- if test $ret != 0
+ if test $ret != 0 || test -z "$1"
then
msg='content conflict'
+ ret=1
fi
# Create the working tree file, using "our tree" version from the
msg="${msg}permissions conflict: $5->$6,$7"
ret=1
fi
- if test -z "$1"
- then
- ret=1
- fi
if test $ret != 0
then
- echo "ERROR: $msg in $4"
+ echo "ERROR: $msg in $4" >&2
exit 1
fi
exec git update-index -- "$4"
;;
*)
- echo "ERROR: $4: Not handling case $1 -> $2 -> $3"
+ echo "ERROR: $4: Not handling case $1 -> $2 -> $3" >&2
;;
esac
exit 1