summaryrefslogtreecommitdiff
path: root/git-merge-one-file.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-11-08 06:03:46 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-11-12 05:18:17 (GMT)
commitf7d24bbefb06c40f7738f471dda561ab45496d24 (patch)
tree1d119624876dc24e31d0f520fe86447ade63cec2 /git-merge-one-file.sh
parent6fd72e39af8a69615d32c3fd4d5fe0788f54a2ea (diff)
downloadgit-f7d24bbefb06c40f7738f471dda561ab45496d24.zip
git-f7d24bbefb06c40f7738f471dda561ab45496d24.tar.gz
git-f7d24bbefb06c40f7738f471dda561ab45496d24.tar.bz2
merge with /dev/null as base, instead of punting O==empty case
Instead of leaving the path unmerged in a case where each side adds different version of the same path, attempt to merge it with empty base and leave "our" version in the index file, just like we do for the case in conflicting merge. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-merge-one-file.sh')
-rwxr-xr-xgit-merge-one-file.sh20
1 files changed, 16 insertions, 4 deletions
diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh
index 5419e59..32e17cb 100755
--- a/git-merge-one-file.sh
+++ b/git-merge-one-file.sh
@@ -40,7 +40,7 @@ case "${1:-.}${2:-.}${3:-.}" in
;;
#
-# Added in both (check for same permissions).
+# Added in both, identically (check for same permissions).
#
".$3$2")
if [ "$6" != "$7" ]; then
@@ -56,9 +56,18 @@ case "${1:-.}${2:-.}${3:-.}" in
#
# Modified in both, but differently.
#
-"$1$2$3")
- echo "Auto-merging $4."
- orig=`git-unpack-file $1`
+"$1$2$3" | ".$2$3")
+ case "$1" in
+ '')
+ echo "Added $4 in both, but differently."
+ orig=`git-unpack-file $2`
+ : >$orig
+ ;;
+ *)
+ echo "Auto-merging $4."
+ orig=`git-unpack-file $1`
+ ;;
+ esac
src2=`git-unpack-file $3`
# We reset the index to the first branch, making
@@ -73,6 +82,9 @@ case "${1:-.}${2:-.}${3:-.}" in
echo "ERROR: Permissions conflict: $5->$6,$7."
ret=1
fi
+ if [ "$1" = '' ]; then
+ ret=1
+ fi
if [ $ret -ne 0 ]; then
echo "ERROR: Merge conflict in $4."