rebase: factor out command line option processing

Factor out the command line processing in git-rebase--interactive.sh
to git-rebase.sh. Store the options in variables in git-rebase.sh and
then source git-rebase--interactive.sh.

Suggested-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Martin von Zweigbergk
2011-02-06 13:43:39 -05:00
committed by Junio C Hamano
parent 9765b6abeb
commit cf432ca051
2 changed files with 95 additions and 177 deletions

View File

@ -64,6 +64,9 @@ type=
state_dir=
# One of {'', continue, skip, abort}, as parsed from command line
action=
preserve_merges=
autosquash=
test "$(git config --bool rebase.autosquash)" = "true" && autosquash=t
read_state () {
if test "$type" = merge
@ -176,27 +179,12 @@ finish_rb_merge () {
say All done.
}
is_interactive () {
while test $# != 0
do
case "$1" in
-i|--interactive)
interactive_rebase=explicit
break
;;
-p|--preserve-merges)
interactive_rebase=implied
;;
esac
shift
done
run_interactive_rebase () {
if [ "$interactive_rebase" = implied ]; then
GIT_EDITOR=:
export GIT_EDITOR
fi
test -n "$interactive_rebase" || test -f "$merge_dir"/interactive
. git-rebase--interactive "$@"
}
run_pre_rebase_hook () {
@ -211,8 +199,6 @@ run_pre_rebase_hook () {
test -f "$apply_dir"/applying &&
die 'It looks like git-am is in progress. Cannot rebase.'
is_interactive "$@" && exec git-rebase--interactive "$@"
if test -d "$apply_dir"
then
type=am
@ -249,6 +235,19 @@ do
onto="$2"
shift
;;
-i|--interactive)
interactive_rebase=explicit
;;
-p|--preserve-merges)
preserve_merges=t
test -z "$interactive_rebase" && interactive_rebase=implied
;;
--autosquash)
autosquash=t
;;
--no-autosquash)
autosquash=
;;
-M|-m|--m|--me|--mer|--merg|--merge)
do_merge=t
;;
@ -339,7 +338,11 @@ do
done
test $# -gt 2 && usage
test -n "$action" && test -z "$in_progress" && die "No rebase in progress?"
if test -n "$action"
then
test -z "$in_progress" && die "No rebase in progress?"
test "$type" = interactive && run_interactive_rebase
fi
case "$action" in
continue)
@ -415,6 +418,21 @@ fi
test $# -eq 0 && test -z "$rebase_root" && usage
if test -n "$interactive_rebase"
then
type=interactive
state_dir="$merge_dir"
elif test -n "$do_merge"
then
type=merge
state_dir="$merge_dir"
else
type=am
state_dir="$apply_dir"
fi
test "$type" = interactive && run_interactive_rebase "$@"
require_clean_work_tree "rebase" "Please commit or stash them."
if test -z "$rebase_root"