Update the git-ls-tree documentation
[git.git] / git-merge.sh
index dd104db..a221daa 100755 (executable)
@@ -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 <strategy>]... <merge-message> <head> <remote>+"
 }
 
-# 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
@@ -262,7 +273,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.