merge-one-file: make sure we create the merged file.
authorJunio C Hamano <junkio@cox.net>
Fri, 2 Dec 2005 08:50:59 +0000 (00:50 -0800)
committerJunio C Hamano <junkio@cox.net>
Fri, 2 Dec 2005 09:08:14 +0000 (01:08 -0800)
The "update-index followed by checkout-index" chain served two
purposes -- to collapse the index to "our" version, and make
sure that file exists in the working tree.  In the recent update
to leave the index unmerged on conflicting path, we wanted to
stop doing the former, but we still need to do the latter (we
allow merging to work in an un-checked-out working tree).

Signed-off-by: Junio C Hamano <junkio@cox.net>
git-merge-one-file.sh

index 9a049f426d1ad9ed268877e3bda917ee9cc8f315..906098dda5a2e9f4490b518eadbdaa4332e8793b 100755 (executable)
@@ -79,7 +79,13 @@ case "${1:-.}${2:-.}${3:-.}" in
                ;;
        esac
 
-       merge "$4" "$orig" "$src2"
+       # Create the working tree file, with the correct permission bits.
+       # we can not rely on the fact that our tree has the path, because
+       # we allow the merge to be done in an unchecked-out working tree.
+       rm -f "$4" &&
+               git-cat-file blob "$2" >"$4" &&
+               case "$6" in *7??) chmod +x "$4" ;; esac &&
+               merge "$4" "$orig" "$src2"
        ret=$?
        rm -f -- "$orig" "$src2"