summaryrefslogtreecommitdiff
path: root/git-merge-one-file.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-12-02 00:50:59 -0800
committerJunio C Hamano <junkio@cox.net>2005-12-02 01:08:14 -0800
commit1c2c10b6e6d86066d68635a2a968c7162498ea41 (patch)
treef86926f70f7cc1223c949b773671dc42646717c5 /git-merge-one-file.sh
parent57ae0d09ed3c4e409bed78b77322fa5e9bad3f3f (diff)
downloadgit-1c2c10b6e6d86066d68635a2a968c7162498ea41.tar.gz
merge-one-file: make sure we create the merged file.
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>
Diffstat (limited to 'git-merge-one-file.sh')
-rwxr-xr-xgit-merge-one-file.sh8
1 files changed, 7 insertions, 1 deletions
diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh
index 9a049f426d..906098dda5 100755
--- a/git-merge-one-file.sh
+++ b/git-merge-one-file.sh
@@ -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"