From: Stephan Beyer <s-beyer@gmx.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Christian Couder <chriscool@tuxfamily.org>,
Stephan Beyer <s-beyer@gmx.net>
Subject: [PATCH v3 2/2] Make rebase--interactive use OPTIONS_SPEC
Date: Sun, 22 Jun 2008 01:55:51 +0200 [thread overview]
Message-ID: <1214092551-8075-2-git-send-email-s-beyer@gmx.net> (raw)
In-Reply-To: <1214092551-8075-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>
---
Hi,
I resent this patch, too, because I've changed something:
To make the OPTIONS_SPEC more consistent with other OPTIONS_SPECs,
I lowe-cased the first letters of the help string for each option.
Regards,
Stephan
git-rebase--interactive.sh | 71 +++++++++++++++++++++++++++++--------------
1 files changed, 48 insertions(+), 23 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 3f926d8..f13768c 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,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"
@@ -620,15 +654,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.310.g344d
next prev parent reply other threads:[~2008-06-21 23:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-20 2:45 some small changes for rebase-i Stephan Beyer
2008-06-20 2:45 ` [PATCH 1/3] t3404: slight improvements Stephan Beyer
2008-06-20 2:45 ` [PATCH 2/3] rebase-i: slight internal improvements Stephan Beyer
2008-06-20 2:45 ` [PATCH 3/3] Make rebase--interactive use OPTIONS_SPEC Stephan Beyer
2008-06-20 5:48 ` Stephan Beyer
2008-06-20 13:15 ` Johannes Schindelin
2008-06-20 18:30 ` [PATCH 1/2] t3404: extra checks and s/! git/test_must_fail git/ Stephan Beyer
2008-06-20 18:30 ` [PATCH 2/2] Make rebase--interactive use OPTIONS_SPEC Stephan Beyer
2008-06-20 18:48 ` [PATCH 1/2] t3404: extra checks and s/! git/test_must_fail git/ Brandon Casey
2008-06-20 19:00 ` Stephan Beyer
2008-06-20 22:18 ` しらいしななこ
2008-06-21 1:46 ` Stephan Beyer
2008-06-21 9:46 ` Junio C Hamano
2008-06-21 23:55 ` [PATCH v3 1/2] t3404: stricter tests for git-rebase--interactive Stephan Beyer
2008-06-21 23:55 ` Stephan Beyer [this message]
2008-06-20 7:16 ` [PATCH 2/3] rebase-i: slight internal improvements Johannes Sixt
2008-06-20 8:01 ` Stephan Beyer
2008-06-20 8:17 ` Johannes Sixt
2008-06-20 12:46 ` Johannes Schindelin
2008-06-20 18:45 ` Stephan Beyer
2008-06-20 13:05 ` [PATCH 1/3] t3404: slight improvements 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=1214092551-8075-2-git-send-email-s-beyer@gmx.net \
--to=s-beyer@gmx.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=chriscool@tuxfamily.org \
--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).