branch: let branch filters imply --list
[gitweb.git] / git-rebase.sh
index 705bd89c676b836feffb8aac0efef2a524e26418..b2f1c76dc3ede707870564a8ba73af6d1753e95c 100755 (executable)
@@ -3,37 +3,12 @@
 # Copyright (c) 2005 Junio C Hamano.
 #
 
-USAGE='[--interactive | -i] [--exec | -x <cmd>] [-v] [--force-rebase | -f]
-       [--no-ff] [--onto <newbase>] [<upstream>|--root] [<branch>] [--quiet | -q]'
-LONG_USAGE='git-rebase replaces <branch> with a new branch of the
-same name.  When the --onto option is provided the new branch starts
-out with a HEAD equal to <newbase>, otherwise it is equal to <upstream>
-It then attempts to create a new commit for each commit from the original
-<branch> that does not exist in the <upstream> branch.
-
-It is possible that a merge failure will prevent this process from being
-completely automatic.  You will have to resolve any such merge failure
-and run git rebase --continue.  Another option is to bypass the commit
-that caused the merge failure with git rebase --skip.  To check out the
-original <branch> and remove the .git/rebase-apply working files, use the
-command git rebase --abort instead.
-
-Note that if <branch> is not specified on the command line, the
-currently checked out branch is used.
-
-Example:       git-rebase master~1 topic
-
-       A---B---C topic                   A'\''--B'\''--C'\'' topic
-       /                   -->           /
-  D---E---F---G master          D---E---F---G master
-'
-
 SUBDIRECTORY_OK=Yes
 OPTIONS_KEEPDASHDASH=
 OPTIONS_SPEC="\
 git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] [<upstream>] [<branch>]
 git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
-git-rebase [-i] --continue | --abort | --skip
+git-rebase --continue | --abort | --skip | --edit-todo
 --
  Available options are
 v,verbose!         display a diffstat of what changed upstream
@@ -63,6 +38,7 @@ C=!                passed to 'git apply'
 continue!          continue
 abort!             abort and check out the original branch
 skip!              skip current patch and continue
+edit-todo!         edit the todo list during an interactive rebase
 "
 . git-sh-setup
 . git-sh-i18n
@@ -215,7 +191,7 @@ do
        --verify)
                ok_to_skip_pre_rebase=
                ;;
-       --continue|--skip|--abort)
+       --continue|--skip|--abort|--edit-todo)
                test $total_argc -eq 2 || usage
                action=${1##--}
                ;;
@@ -331,6 +307,11 @@ then
        fi
 fi
 
+if test "$action" = "edit-todo" && test "$type" != "interactive"
+then
+       die "$(gettext "The --edit-todo action can only be used during interactive rebase.")"
+fi
+
 case "$action" in
 continue)
        # Sanity check
@@ -363,6 +344,9 @@ abort)
        rm -r "$state_dir"
        exit
        ;;
+edit-todo)
+       run_specific_rebase
+       ;;
 esac
 
 # Make sure no rebase is in progress
@@ -373,7 +357,7 @@ then
        cmd_clear_stale_rebase="rm -fr \"$state_dir\""
        die "
 $(eval_gettext 'It seems that there is already a $state_dir_base directory, and
-I wonder if you ware in the middle of another rebase.  If that is the
+I wonder if you are in the middle of another rebase.  If that is the
 case, please try
        $cmd_live_rebase
 If that is not the case, please