зеркало из https://github.com/microsoft/git.git
rebase: stricter check of standalone sub command
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@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
3426232248
Коммит
95135b06fe
|
@ -229,6 +229,7 @@ then
|
||||||
fi
|
fi
|
||||||
test -n "$type" && in_progress=t
|
test -n "$type" && in_progress=t
|
||||||
|
|
||||||
|
total_argc=$#
|
||||||
while test $# != 0
|
while test $# != 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
@ -239,9 +240,8 @@ do
|
||||||
OK_TO_SKIP_PRE_REBASE=
|
OK_TO_SKIP_PRE_REBASE=
|
||||||
;;
|
;;
|
||||||
--continue|--skip|--abort)
|
--continue|--skip|--abort)
|
||||||
|
test $total_argc -eq 1 || usage
|
||||||
action=${1##--}
|
action=${1##--}
|
||||||
shift
|
|
||||||
break
|
|
||||||
;;
|
;;
|
||||||
--onto)
|
--onto)
|
||||||
test 2 -le "$#" || usage
|
test 2 -le "$#" || usage
|
||||||
|
|
|
@ -35,6 +35,11 @@ test_expect_success 'rebase with git am -3 (default)' '
|
||||||
test_must_fail git rebase master
|
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' '
|
test_expect_success 'rebase --skip with am -3' '
|
||||||
git rebase --skip
|
git rebase --skip
|
||||||
'
|
'
|
||||||
|
|
|
@ -84,6 +84,16 @@ testrebase() {
|
||||||
test_cmp reflog_before reflog_after &&
|
test_cmp reflog_before reflog_after &&
|
||||||
rm 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
|
testrebase "" .git/rebase-apply
|
||||||
|
|
|
@ -40,4 +40,9 @@ test_expect_success 'non-interactive rebase --continue works with touched file'
|
||||||
git rebase --continue
|
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
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче