X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-merge.sh;h=e50fbb1160ad6ccfebc0d65fcc54bc3488e597cd;hb=9470657ad0d0472e3e3c2e352334f60e7bd777c1;hp=7f481e4caacf295635f1fb69c9b4f1c364355234;hpb=302ebfe52192fff9a2c1c612dff22325fd073acc;p=git.git diff --git a/git-merge.sh b/git-merge.sh index 7f481e4c..e50fbb11 100755 --- a/git-merge.sh +++ b/git-merge.sh @@ -3,19 +3,15 @@ # Copyright (c) 2005 Junio C Hamano # -. git-sh-setup || die "Not a git archive" + +USAGE='[-n] [--no-commit] [-s ]... +' +. git-sh-setup LF=' ' -usage () { - die "git-merge [-n] [--no-commit] [-s ]... +" -} - -# all_strategies='resolve recursive stupid octopus' - all_strategies='recursive octopus resolve stupid ours' -default_strategies='resolve octopus' +default_strategies='recursive' use_strategies= dropsave() { @@ -90,11 +86,6 @@ do shift done -case "$use_strategies" in -'') - use_strategies=$default_strategies - ;; -esac test "$#" -le 2 && usage ;# we need at least two heads. merge_msg="$1" @@ -104,11 +95,14 @@ head=$(git-rev-parse --verify "$1"^0) || usage shift # All the rest are remote heads +remoteheads= for remote do - git-rev-parse --verify "$remote"^0 >/dev/null || + remotehead=$(git-rev-parse --verify "$remote"^0) || die "$remote - not something we can merge" + remoteheads="${remoteheads}$remotehead " done +set x $remoteheads ; shift case "$#" in 1) @@ -185,6 +179,17 @@ case "$#,$common,$no_commit" in ;; esac +case "$use_strategies" in +'') + case "$#" in + 1) + use_strategies="$default_strategies" ;; + *) + use_strategies=octopus ;; + esac + ;; +esac + # At this point, we need a real merge. No matter what strategy # we use, it would operate on the index, possibly affecting the # working tree, and when resolved cleanly, have the desired tree @@ -269,7 +274,8 @@ fi case "$best_strategy" in '') restorestate - die "No merge strategy handled the merge." + echo >&2 "No merge strategy handled the merge." + exit 2 ;; "$wt_strategy") # We already have its result in the working tree.