Skip to content

Commit

Permalink
rebase: allow --skip to work with --merge
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Eric Wong authored and Junio C Hamano committed Jun 25, 2006
1 parent 9e4bc7d commit d5e673b
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 2 deletions.
1 change: 0 additions & 1 deletion Documentation/git-rebase.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 12 additions & 1 deletion git-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
61 changes: 61 additions & 0 deletions t/t3403-rebase-skip.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit d5e673b

Please sign in to comment.