The sub commands '--continue', '--skip' or '--abort' may only be used standalone according to the documentation. Other options following the sub command are currently not accepted, but options preceeding them are. For example, 'git rebase --continue -v' is not accepted, while 'git rebase -v --continue' is. Tighten up the check and allow no other options when one of these sub commands are used. Only check that it is standalone for non-interactive rebase for now. Once the command line processing for interactive rebase has been replaced by the command line processing in git-rebase.sh, this check will also apply to interactive rebase. Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@xxxxxxxxx> --- Is this too simplistic? Do we forsee that we want to support passing options when resuming a rebase? Is it better to check for each other option that it is not passed (i.e. no '-v', no '-s' etc.)? Might some users be depending on the current behavior, even though it is undocumented? git-rebase.sh | 4 ++-- t/t3403-rebase-skip.sh | 5 +++++ t/t3407-rebase-abort.sh | 10 ++++++++++ t/t3418-rebase-continue.sh | 5 +++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/git-rebase.sh b/git-rebase.sh index e3fd001..d689aad 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -229,6 +229,7 @@ then fi test -n "$type" && in_progress=t +total_argc=$# while test $# != 0 do case "$1" in @@ -239,9 +240,8 @@ do OK_TO_SKIP_PRE_REBASE= ;; --continue|--skip|--abort) + test $total_argc -eq 1 || usage action=${1##--} - shift - break ;; --onto) test 2 -le "$#" || usage diff --git a/t/t3403-rebase-skip.sh b/t/t3403-rebase-skip.sh index 64446e3..826500b 100755 --- a/t/t3403-rebase-skip.sh +++ b/t/t3403-rebase-skip.sh @@ -35,6 +35,11 @@ test_expect_success 'rebase with git am -3 (default)' ' test_must_fail git rebase master ' +test_expect_success 'rebase --skip can not be used with other options' ' + test_must_fail git rebase -v --skip && + test_must_fail git rebase --skip -v +' + test_expect_success 'rebase --skip with am -3' ' git rebase --skip ' diff --git a/t/t3407-rebase-abort.sh b/t/t3407-rebase-abort.sh index e573dc8..a6a6c40 100755 --- a/t/t3407-rebase-abort.sh +++ b/t/t3407-rebase-abort.sh @@ -84,6 +84,16 @@ testrebase() { test_cmp reflog_before reflog_after && rm reflog_before reflog_after ' + + test_expect_success 'rebase --abort can not be used with other options' ' + cd "$work_dir" && + # Clean up the state from the previous one + git reset --hard pre-rebase && + test_must_fail git rebase$type master && + test_must_fail git rebase -v --abort && + test_must_fail git rebase --abort -v && + git rebase --abort + ' } testrebase "" .git/rebase-apply diff --git a/t/t3418-rebase-continue.sh b/t/t3418-rebase-continue.sh index 3b0d273..1d90191 100755 --- a/t/t3418-rebase-continue.sh +++ b/t/t3418-rebase-continue.sh @@ -40,4 +40,9 @@ test_expect_success 'non-interactive rebase --continue works with touched file' git rebase --continue ' +test_expect_success 'rebase --continue can not be used with other options' ' + test_must_fail git rebase -v --continue && + test_must_fail git rebase --continue -v +' + test_done -- 1.7.4.rc2.33.g8a14f -- 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