Documentation: bisect: add some titles to some paragraphs.
[gitweb.git] / git-rebase.sh
index c8bd0f99d1306cd311eaf45f73581efc8bb0e512..aadd580f8d40b0d97834e7bf25f58ab9e65faeb1 100755 (executable)
@@ -45,6 +45,7 @@ do_merge=
 dotest=$GIT_DIR/.dotest-merge
 prec=4
 verbose=
+git_am_opt=
 
 continue_merge () {
        test -n "$prev_head" || die "prev_head must be defined"
@@ -213,6 +214,10 @@ do
        -v|--verbose)
                verbose=t
                ;;
+       -C*)
+               git_am_opt=$1
+               shift
+               ;;
        -*)
                usage
                ;;
@@ -249,7 +254,8 @@ fi
 git-update-index --refresh || exit
 diff=$(git-diff-index --cached --name-status -r HEAD)
 case "$diff" in
-?*)    echo "$diff"
+?*)    echo "cannot rebase: your index is not up-to-date"
+       echo "$diff"
        exit 1
        ;;
 esac
@@ -259,6 +265,10 @@ upstream_name="$1"
 upstream=`git rev-parse --verify "${upstream_name}^0"` ||
     die "invalid upstream $upstream_name"
 
+# Make sure the branch to rebase onto is valid.
+onto_name=${newbase-"$upstream_name"}
+onto=$(git-rev-parse --verify "${onto_name}^0") || exit
+
 # If a hook exists, give it a chance to interrupt
 if test -x "$GIT_DIR/hooks/pre-rebase"
 then
@@ -275,16 +285,16 @@ case "$#" in
        git-checkout "$2" || usage
        ;;
 *)
-       branch_name=`git symbolic-ref HEAD` || die "No current branch"
-       branch_name=`expr "z$branch_name" : 'zrefs/heads/\(.*\)'`
+       if branch_name=`git symbolic-ref -q HEAD`
+       then
+               branch_name=`expr "z$branch_name" : 'zrefs/heads/\(.*\)'`
+       else
+               branch_name=HEAD ;# detached
+       fi
        ;;
 esac
 branch=$(git-rev-parse --verify "${branch_name}^0") || exit
 
-# Make sure the branch to rebase onto is valid.
-onto_name=${newbase-"$upstream_name"}
-onto=$(git-rev-parse --verify "${onto_name}^0") || exit
-
 # Now we are rebasing commits $upstream..$branch on top of $onto
 
 # Check if we are already based on $onto, but this should be
@@ -317,7 +327,7 @@ fi
 if test -z "$do_merge"
 then
        git-format-patch -k --stdout --full-index --ignore-if-in-upstream "$upstream"..ORIG_HEAD |
-       git am --binary -3 -k --resolvemsg="$RESOLVEMSG"
+       git am $git_am_opt --binary -3 -k --resolvemsg="$RESOLVEMSG"
        exit $?
 fi