From: Stephan Beyer <s-beyer@gmx.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Stephan Beyer <s-beyer@gmx.net>
Subject: [PATCH 1/2] Make rebase--interactive use OPTIONS_SPEC
Date: Tue, 1 Jul 2008 04:39:27 +0200 [thread overview]
Message-ID: <1214879968-17944-2-git-send-email-s-beyer@gmx.net> (raw)
In-Reply-To: <1214879968-17944-1-git-send-email-s-beyer@gmx.net>
Also add some checks that --continue/--abort/--skip
actions are used without --onto, -p, -t, etc.
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
---
git-rebase--interactive.sh | 72 ++++++++++++++++++++++++++++---------------
1 files changed, 47 insertions(+), 25 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 7e073bb..ad16fa2 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -10,10 +10,27 @@
# 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 [-i] (--continue | --abort | --skip)
+--
+ Available options are
+p,preserve-merges try to recreate merges instead of ignoring them
+t,preserve-tags update tags to the new commit object
+m,merge always used (no-op)
+i,interactive always used (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
+ Actions:
+continue continue rebasing process
+abort abort rebasing process and restore original branch
+skip skip current patch and continue rebasing process
+"
-OPTIONS_SPEC=
. git-sh-setup
require_work_tree
@@ -25,6 +42,8 @@ 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
@@ -515,10 +534,19 @@ create_extended_todo_list () {
done
}
+is_standalone () {
+ test $# -eq 2 -a "$2" = '--' &&
+ test -z "$ONTO" &&
+ test -z "$PRESERVE_TAGS" &&
+ test -z "$PRESERVE_MERGES" &&
+ test -z "$FIRST_PARENT"
+}
+
while test $# != 0
do
case "$1" in
--continue)
+ is_standalone "$@" || usage
comment_for_reflog continue
test -d "$DOTEST" || die "No interactive rebase running"
@@ -551,6 +579,7 @@ do
do_rest
;;
--abort)
+ is_standalone "$@" || usage
comment_for_reflog abort
git rerere clear
@@ -568,6 +597,7 @@ do
exit
;;
--skip)
+ is_standalone "$@" || usage
comment_for_reflog skip
git rerere clear
@@ -575,7 +605,7 @@ do
output git reset --hard && do_rest
;;
- -s|--strategy)
+ -s)
case "$#,$1" in
*,*=*)
STRATEGY="-s "$(expr "z$1" : 'z-[^=]*=\(.*\)') ;;
@@ -586,32 +616,33 @@ 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
;;
- ''|-h)
- usage
+ --onto)
+ shift
+ ONTO=$(git rev-parse --verify "$1") ||
+ die "Does not point to a valid commit: $1"
;;
- *)
+ --)
+ shift
+ test $# -eq 1 -o $# -eq 2 || usage
test -d "$DOTEST" &&
die "Interactive rebase already started"
@@ -620,15 +651,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"
--
1.5.6.334.gdaf0
next prev parent reply other threads:[~2008-07-01 2:40 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-01 2:38 git sequencer prototype Stephan Beyer
2008-07-01 2:38 ` [RFC/PATCH 1/4] Add git-sequencer shell prototype Stephan Beyer
2008-07-01 2:38 ` [RFC/PATCH 2/4] Add git-sequencer prototype documentation Stephan Beyer
2008-07-01 2:38 ` [RFC/PATCH 3/4] Add git-sequencer test suite (t3350) Stephan Beyer
2008-07-01 2:38 ` [RFC/PATCH 4/4] Migrate git-am to use git-sequencer Stephan Beyer
2008-07-01 2:39 ` git-rebase-i migration to sequencer Stephan Beyer
2008-07-01 2:39 ` Stephan Beyer [this message]
2008-07-01 2:39 ` [RFC/PATCH 2/2] Migrate git-rebase--i to use git-sequencer Stephan Beyer
2008-07-05 17:31 ` [RFC/PATCH 3/4] Add git-sequencer test suite (t3350) Stephan Beyer
2008-07-05 18:16 ` Junio C Hamano
2008-07-01 13:02 ` [RFC/PATCH 2/4] Add git-sequencer prototype documentation Jakub Narebski
2008-07-01 16:03 ` Stephan Beyer
2008-07-01 18:04 ` Jakub Narebski
2008-07-01 19:50 ` Stephan Beyer
2008-07-02 0:39 ` Jakub Narebski
2008-07-02 1:20 ` Junio C Hamano
2008-07-02 3:01 ` Stephan Beyer
2008-07-05 17:00 ` [PATCH v2 " Stephan Beyer
2008-07-08 10:37 ` Jakub Narebski
2008-07-08 11:49 ` Stephan Beyer
2008-07-09 5:20 ` Karl Hasselström
2008-07-03 1:45 ` [RFC/PATCH 1/4] Add git-sequencer shell prototype Junio C Hamano
2008-07-03 11:03 ` Johannes Schindelin
2008-07-03 21:09 ` Stephan Beyer
2008-07-03 22:11 ` Junio C Hamano
2008-07-03 22:34 ` Stephan Beyer
2008-07-03 23:53 ` Johannes Schindelin
2008-07-04 0:38 ` Stephan Beyer
2008-07-04 1:03 ` Johannes Schindelin
2008-07-04 1:53 ` Stephan Beyer
2008-07-04 15:19 ` [PATCH] Allow cherry-picking root commits Johannes Schindelin
2008-07-04 16:41 ` Stephan Beyer
2008-07-06 1:05 ` Junio C Hamano
2008-07-06 1:37 ` Johannes Schindelin
2008-07-06 11:32 ` t3503: Add test case for identical files Stephan Beyer
2008-07-06 11:35 ` [PATCH] Allow cherry-picking root commits Stephan Beyer
2008-07-06 12:48 ` Johannes Schindelin
2008-07-04 1:06 ` [RFC/PATCH 1/4] Add git-sequencer shell prototype Stephan Beyer
2008-07-04 1:11 ` Johannes Schindelin
2008-07-03 22:51 ` Junio C Hamano
2008-07-03 23:33 ` Stephan Beyer
2008-07-03 13:10 ` Jakub Narebski
2008-07-03 21:12 ` Stephan Beyer
2008-07-05 16:58 ` [PATCH v2 " Stephan Beyer
2008-07-01 8:51 ` git sequencer prototype Junio C Hamano
2008-07-01 14:53 ` Stephan Beyer
2008-07-04 21:00 ` Alex Riesen
2008-07-04 22:09 ` Junio C Hamano
2008-07-04 22:23 ` Stephan Beyer
2008-07-05 8:13 ` Alex Riesen
2008-07-05 10:12 ` Thomas Adam
2008-07-05 10:13 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1214879968-17944-2-git-send-email-s-beyer@gmx.net \
--to=s-beyer@gmx.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).