Signed-off-by: Stephan Beyer <s-beyer@xxxxxxx> --- git-rebase--interactive.sh | 58 ++++++++++++++++++++++++++----------------- 1 files changed, 35 insertions(+), 23 deletions(-) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index e8ac2ae..aeb9628 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -10,10 +10,25 @@ # The original idea comes from Eric W. Biederman, in # http://article.gmane.org/gmane.comp.version-control.git/22407 -USAGE='(--continue | --abort | --skip | [--preserve-merges] [--first-parent] - [--preserve-tags] [--verbose] [--onto <branch>] <upstream> [<branch>])' +OPTIONS_KEEPDASHDASH= +OPTIONS_SPEC=' +git-rebase -i [options] <upstream> [<branch>] +git-rebase (--continue | --abort | --skip) +-- +continue Continue rebasing process +abort Abort rebasing process and restore original branch +skip Skip current patch and continue rebasing process +p,preserve-merges Try to recreate merges instead of ignoring +t,preserve-tags Update tags to the new commit object +m,merge Used anyways (no-op) +i,interactive Used anyways (no-op) +onto= Rebase onto given branch instead of upstream +v,verbose Display a diffstat of what changed upstream + When preserving merges: +f,first-parent Show only commits following the first parent of each commit +s,strategy= Use the given merge strategy +' -OPTIONS_SPEC= . git-sh-setup require_work_tree @@ -25,6 +40,7 @@ SQUASH_MSG="$DOTEST"/message-squash PRESERVE_MERGES= STRATEGY= VERBOSE= +ONTO= MARK_PREFIX='refs/rebase-marks' test -f "$DOTEST"/strategy && STRATEGY="$(cat "$DOTEST"/strategy)" test -f "$DOTEST"/verbose && VERBOSE=t @@ -584,7 +600,7 @@ do output git reset --hard && do_rest ;; - -s|--strategy) + -s) case "$#,$1" in *,*=*) STRATEGY="-s "$(expr "z$1" : 'z-[^=]*=\(.*\)') ;; @@ -595,32 +611,36 @@ do shift ;; esac ;; - -m|--merge) + -m) # we use merge anyway ;; - -C*) - die "Interactive rebase uses merge, so $1 does not make sense" - ;; - -v|--verbose) + -v) VERBOSE=t ;; - -p|--preserve-merges) + -p) PRESERVE_MERGES=t ;; - -f|--first-parent) + -f) FIRST_PARENT=t PRESERVE_MERGES=t ;; - -t|--preserve-tags) + -t) PRESERVE_TAGS=t ;; - -i|--interactive) + -i) # yeah, we know ;; + --onto) + shift + ONTO=$(git rev-parse --verify "$1") || + die "Does not point to a valid commit: $1" + ;; ''|-h) usage ;; - *) + --) + shift + test $# -eq 1 -o $# -eq 2 || usage test -d "$DOTEST" && die "Interactive rebase already started" @@ -629,15 +649,6 @@ do comment_for_reflog start - ONTO= - case "$1" in - --onto) - ONTO=$(git rev-parse --verify "$2") || - die "Does not point to a valid commit: $2" - shift; shift - ;; - esac - require_clean_work_tree UPSTREAM=$(git rev-parse --verify "$1") || die "Invalid base" @@ -720,6 +731,7 @@ EOF die_abort "Nothing to do" output git checkout $ONTO && do_rest + exit 0 ;; esac shift -- 1.5.5.1.561.gd8556 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html