Code

Merge branch 'kk/maint-http-push' into maint
[git.git] / git-rebase.sh
index f2742aa054d2080a4a554ade3916c3bfa110af67..ebd4df3a0e821ddcfd1eabfcaac17f854e172a85 100755 (executable)
@@ -139,10 +139,26 @@ finish_rb_merge () {
 }
 
 is_interactive () {
-       test -f "$dotest"/interactive ||
-       while :; do case $#,"$1" in 0,|*,-i|*,--interactive) break ;; esac
+       while test $# != 0
+       do
+               case "$1" in
+                       -i|--interactive)
+                               interactive_rebase=explicit
+                               break
+                       ;;
+                       -p|--preserve-merges)
+                               interactive_rebase=implied
+                       ;;
+               esac
                shift
-       done && test -n "$1"
+       done
+
+       if [ "$interactive_rebase" = implied ]; then
+               GIT_EDITOR=:
+               export GIT_EDITOR
+       fi
+
+       test -n "$interactive_rebase" || test -f "$dotest"/interactive
 }
 
 run_pre_rebase_hook () {
@@ -316,11 +332,14 @@ else
 fi
 
 # The tree must be really really clean.
-git update-index --ignore-submodules --refresh || exit
+if ! git update-index --ignore-submodules --refresh; then
+       echo >&2 "cannot rebase: you have unstaged changes"
+       exit 1
+fi
 diff=$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)
 case "$diff" in
-?*)    echo "cannot rebase: your index is not up-to-date"
-       echo "$diff"
+?*)    echo >&2 "cannot rebase: your index contains uncommitted changes"
+       echo >&2 "$diff"
        exit 1
        ;;
 esac
@@ -349,10 +368,10 @@ case "$#" in
        switch_to="$2"
 
        if git show-ref --verify --quiet -- "refs/heads/$2" &&
-          branch=$(git rev-parse --verify "refs/heads/$2" 2>/dev/null)
+          branch=$(git rev-parse -q --verify "refs/heads/$2")
        then
                head_name="refs/heads/$2"
-       elif branch=$(git rev-parse --verify "$2" 2>/dev/null)
+       elif branch=$(git rev-parse -q --verify "$2")
        then
                head_name="detached HEAD"
        else