Browse Source

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>
maint
Eric Wong 19 years ago committed by Junio C Hamano
parent
commit
d5e673b60b
  1. 1
      Documentation/git-rebase.txt
  2. 13
      git-rebase.sh
  3. 61
      t/t3403-rebase-skip.sh

1
Documentation/git-rebase.txt

@ -108,7 +108,6 @@ OPTIONS @@ -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

13
git-rebase.sh

@ -137,7 +137,18 @@ do @@ -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

@ -0,0 +1,61 @@ @@ -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…
Cancel
Save