Code

Make "git commit" work correctly in the presense of a manual merge
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 8 Jun 2005 20:33:15 +0000 (13:33 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Wed, 8 Jun 2005 20:33:15 +0000 (13:33 -0700)
This has gotten only very light testing, but something like this is
clearly necessary and did the right thing for the one case I threw at
it.

git-commit-script
git-resolve-script

index e818d0a35ce2a9f5358520b7c44dfe27845de4b7..903c8dfabd9a15053e249ac2909036cab1d2922e 100755 (executable)
@@ -1,5 +1,16 @@
 #!/bin/sh
-git-status-script > .editmsg
+: ${GIT_DIR=.git}
+PARENTS="HEAD"
+if [ -f $GIT_DIR/MERGE_HEAD ]; then
+       echo "#"
+       echo "# It looks like your may be committing a MERGE."
+       echo "# If this is not correct, please remove the file"
+       echo "# $GIT_DIR/MERGE_HEAD"
+       echo "# and try again"
+       echo "#"
+       PARENTS="HEAD -p MERGE_HEAD"
+fi > .editmsg
+git-status-script >> .editmsg
 if [ "$?" != "0" ]
 then
        cat .editmsg
@@ -9,5 +20,5 @@ ${VISUAL:-${EDITOR:-vi}} .editmsg
 grep -v '^#' < .editmsg | git-stripspace > .cmitmsg
 [ -s .cmitmsg ] || exit 1
 tree=$(git-write-tree) || exit 1
-commit=$(cat .cmitmsg | git-commit-tree $tree -p HEAD) || exit 1
+commit=$(cat .cmitmsg | git-commit-tree $tree -p $PARENTS) || exit 1
 echo $commit > ${GIT_DIR:-.git}/HEAD
index da79a973eaafa1b8b7e21b719698762896e13569..0b04a5f6af8b97065cfe812509f2d96a600825ab 100644 (file)
@@ -57,4 +57,5 @@ fi
 result_commit=$(echo "$merge_msg" | git-commit-tree $result_tree -p $head -p $merge)
 echo "Committed merge $result_commit"
 echo $result_commit > "$GIT_DIR"/HEAD
-git-diff-tree -p ORIG_HEAD HEAD | git-apply --stat
+git-diff-tree -p $head $result_commit | git-apply --stat
+rm $GIT_DIR/ORIG_HEAD $GIT_DIR/MERGE_HEAD