From 9c065315f70fb1086ef16fc37e72e3edbaf3e919 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 8 Jun 2005 13:33:15 -0700 Subject: [PATCH] Make "git commit" work correctly in the presense of a manual merge 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 | 15 +++++++++++++-- git-resolve-script | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/git-commit-script b/git-commit-script index e818d0a35..903c8dfab 100755 --- a/git-commit-script +++ b/git-commit-script @@ -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 diff --git a/git-resolve-script b/git-resolve-script index da79a973e..0b04a5f6a 100644 --- a/git-resolve-script +++ b/git-resolve-script @@ -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 -- 2.30.2