rebase: allow --skip to work with --merge
Now that we control the merge base selection, we won't be forced into rolling things in that we wanted to skip beforehand. Also, add a test to ensure this all works as intended. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
9e4bc7dd1b
commit
d5e673b60b
@ -108,7 +108,6 @@ OPTIONS
|
||||
|
||||
--skip::
|
||||
Restart the rebasing process by skipping the current patch.
|
||||
This does not work with the --merge option.
|
||||
|
||||
--merge::
|
||||
Use merging strategies to rebase. When the recursive (default) merge
|
||||
|
@ -137,7 +137,18 @@ do
|
||||
--skip)
|
||||
if test -d "$dotest"
|
||||
then
|
||||
die "--skip is not supported when using --merge"
|
||||
prev_head="`cat $dotest/prev_head`"
|
||||
end="`cat $dotest/end`"
|
||||
msgnum="`cat $dotest/msgnum`"
|
||||
msgnum=$(($msgnum + 1))
|
||||
onto="`cat $dotest/onto`"
|
||||
while test "$msgnum" -le "$end"
|
||||
do
|
||||
call_merge "$msgnum"
|
||||
continue_merge
|
||||
done
|
||||
finish_rb_merge
|
||||
exit
|
||||
fi
|
||||
git am -3 --skip --resolvemsg="$RESOLVEMSG"
|
||||
exit
|
||||
|
61
t/t3403-rebase-skip.sh
Executable file
61
t/t3403-rebase-skip.sh
Executable file
@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006 Eric Wong
|
||||
#
|
||||
|
||||
test_description='git rebase --merge --skip tests'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
# we assume the default git-am -3 --skip strategy is tested independently
|
||||
# and always works :)
|
||||
|
||||
if test "$no_python"; then
|
||||
echo "Skipping: no python => no recursive merge"
|
||||
test_done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
test_expect_success setup '
|
||||
echo hello > hello &&
|
||||
git add hello &&
|
||||
git commit -m "hello" &&
|
||||
git branch skip-reference &&
|
||||
|
||||
echo world >> hello &&
|
||||
git commit -a -m "hello world" &&
|
||||
echo goodbye >> hello &&
|
||||
git commit -a -m "goodbye" &&
|
||||
|
||||
git checkout -f skip-reference &&
|
||||
echo moo > hello &&
|
||||
git commit -a -m "we should skip this" &&
|
||||
echo moo > cow &&
|
||||
git add cow &&
|
||||
git commit -m "this should not be skipped" &&
|
||||
git branch pre-rebase skip-reference &&
|
||||
git branch skip-merge skip-reference
|
||||
'
|
||||
|
||||
test_expect_failure 'rebase with git am -3 (default)' 'git rebase master'
|
||||
|
||||
test_expect_success 'rebase --skip with am -3' '
|
||||
git reset --hard HEAD &&
|
||||
git rebase --skip
|
||||
'
|
||||
test_expect_success 'checkout skip-merge' 'git checkout -f skip-merge'
|
||||
|
||||
test_expect_failure 'rebase with --merge' 'git rebase --merge master'
|
||||
|
||||
test_expect_success 'rebase --skip with --merge' '
|
||||
git reset --hard HEAD &&
|
||||
git rebase --skip
|
||||
'
|
||||
|
||||
test_expect_success 'merge and reference trees equal' \
|
||||
'test -z "`git-diff-tree skip-merge skip-reference`"'
|
||||
|
||||
test_debug 'gitk --all & sleep 1'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user