contrib/difftool: Don't repeat merge tool candidates
[gitweb.git] / git-rebase--interactive.sh
index 21ac20c3056062892f938297f44c7e82145e2b61..1438650ae8a2ec71615821168970936b9d170f35 100755 (executable)
@@ -456,7 +456,7 @@ get_saved_options () {
        test -d "$REWRITTEN" && PRESERVE_MERGES=t
        test -f "$DOTEST"/strategy && STRATEGY="$(cat "$DOTEST"/strategy)"
        test -f "$DOTEST"/verbose && VERBOSE=t
-       test ! -s "$DOTEST"/upstream && REBASE_ROOT=t
+       test -f "$DOTEST"/rebase-root && REBASE_ROOT=t
 }
 
 while test $# != 0
@@ -571,7 +571,8 @@ first and then run 'git rebase --continue' again."
                ;;
        --)
                shift
-               test ! -z "$REBASE_ROOT" -o $# -eq 1 -o $# -eq 2 || usage
+               test -z "$REBASE_ROOT" -a $# -ge 1 -a $# -le 2 ||
+               test ! -z "$REBASE_ROOT" -a $# -le 1 || usage
                test -d "$DOTEST" &&
                        die "Interactive rebase already started"
 
@@ -585,6 +586,7 @@ first and then run 'git rebase --continue' again."
                        test -z "$ONTO" && ONTO=$UPSTREAM
                        shift
                else
+                       UPSTREAM=
                        UPSTREAM_ARG=--root
                        test -z "$ONTO" &&
                                die "You must specify --onto when using --root"
@@ -611,7 +613,12 @@ first and then run 'git rebase --continue' again."
                        echo "detached HEAD" > "$DOTEST"/head-name
 
                echo $HEAD > "$DOTEST"/head
-               echo $UPSTREAM > "$DOTEST"/upstream
+               case "$REBASE_ROOT" in
+               '')
+                       rm -f "$DOTEST"/rebase-root ;;
+               *)
+                       : >"$DOTEST"/rebase-root ;;
+               esac
                echo $ONTO > "$DOTEST"/onto
                test -z "$STRATEGY" || echo "$STRATEGY" > "$DOTEST"/strategy
                test t = "$VERBOSE" && : > "$DOTEST"/verbose