X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-merge.sh;h=d352a3cf65e45e0da0a8ee1989e9acb522e132b5;hb=562051809589574576971c53c23aad93f8c395d9;hp=dd104db7ad5991543b1156e142173e40b0ff05bc;hpb=123ee3ca7b57c32bb3ecd8cfede20dbb9dd5a8a8;p=git.git diff --git a/git-merge.sh b/git-merge.sh index dd104db7..d352a3cf 100755 --- a/git-merge.sh +++ b/git-merge.sh @@ -3,7 +3,7 @@ # Copyright (c) 2005 Junio C Hamano # -. git-sh-setup || die "Not a git archive" +. git-sh-setup LF=' ' @@ -12,10 +12,8 @@ usage () { die "git-merge [-n] [--no-commit] [-s ]... +" } -# all_strategies='resolve recursive stupid octopus' - -all_strategies='recursive octopus resolve stupid' -default_strategies='resolve octopus' +all_strategies='recursive octopus resolve stupid ours' +default_strategies='recursive' use_strategies= dropsave() { @@ -90,11 +88,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" @@ -110,7 +103,14 @@ do die "$remote - not something we can merge" done -common=$(git-show-branch --merge-base $head "$@") +case "$#" in +1) + common=$(git-merge-base --all $head "$@") + ;; +*) + common=$(git-show-branch --merge-base $head "$@") + ;; +esac echo "$head" >"$GIT_DIR/ORIG_HEAD" case "$#,$common,$no_commit" in @@ -162,7 +162,7 @@ case "$#,$common,$no_commit" in up_to_date=t for remote do - common_one=$(git-merge-base $head $remote) + common_one=$(git-merge-base --all $head $remote) if test "$common_one" != "$remote" then up_to_date=f @@ -178,6 +178,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