X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-merge.sh;h=74f07610fa2042ef0f2cb12c051d3be9139a680b;hb=a985d595ada7914e217cbec75470f2950d41505b;hp=d25ae4b82d4208216bb7ce5b5d414ee8b2797865;hpb=9954f5b876abb6118f9bdf1d113239d86acca7bd;p=git.git diff --git a/git-merge.sh b/git-merge.sh index d25ae4b8..74f07610 100755 --- a/git-merge.sh +++ b/git-merge.sh @@ -3,15 +3,13 @@ # Copyright (c) 2005 Junio C Hamano # + +USAGE='[-n] [--no-commit] [-s ]... +' . git-sh-setup LF=' ' -usage () { - die "git-merge [-n] [--no-commit] [-s ]... +" -} - all_strategies='recursive octopus resolve stupid ours' default_strategies='recursive' use_strategies= @@ -211,6 +209,7 @@ case "$use_strategies" in esac result_tree= best_cnt=-1 best_strategy= wt_strategy= +merge_was_ok= for strategy in $use_strategies do test "$wt_strategy" = '' || { @@ -230,6 +229,7 @@ do exit=$? if test "$no_commit" = t && test "$exit" = 0 then + merge_was_ok=t exit=1 ;# pretend it left conflicts. fi @@ -293,6 +293,25 @@ for remote do echo $remote done >"$GIT_DIR/MERGE_HEAD" -echo $merge_msg >"$GIT_DIR/MERGE_MSG" +echo "$merge_msg" >"$GIT_DIR/MERGE_MSG" -die "Automatic merge failed/prevented; fix up by hand" +if test "$merge_was_ok" = t +then + echo >&2 \ + "Automatic merge went well; stopped before committing as requested" + exit 0 +else + { + echo ' +Conflicts: +' + git ls-files --unmerged | + sed -e 's/^[^ ]* / /' | + uniq + } >>"$GIT_DIR/MERGE_MSG" + if test -d "$GIT_DIR/rr-cache" + then + git-rerere + fi + die "Automatic merge failed; fix up by hand" +fi