-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* ew/rebase: rebase --merge: fix for rebasing more than 7 commits. rebase: error out for NO_PYTHON if they use recursive merge Add renaming-rebase test. rebase: Allow merge strategies to be used when rebasing
- Loading branch information
Showing
3 changed files
with
320 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2006 Junio C Hamano | ||
# | ||
|
||
test_description='git rebase --merge test' | ||
|
||
. ./test-lib.sh | ||
|
||
if test "$no_python"; then | ||
echo "Skipping: no python => no recursive merge" | ||
test_done | ||
exit 0 | ||
fi | ||
|
||
T="A quick brown fox | ||
jumps over the lazy dog." | ||
for i in 1 2 3 4 5 6 7 8 9 10 | ||
do | ||
echo "$i $T" | ||
done >original | ||
|
||
test_expect_success setup ' | ||
git add original && | ||
git commit -m"initial" && | ||
git branch side && | ||
echo "11 $T" >>original && | ||
git commit -a -m"master updates a bit." && | ||
echo "12 $T" >>original && | ||
git commit -a -m"master updates a bit more." && | ||
git checkout side && | ||
(echo "0 $T" ; cat original) >renamed && | ||
git add renamed && | ||
git update-index --force-remove original && | ||
git commit -a -m"side renames and edits." && | ||
tr "[a-z]" "[A-Z]" <original >newfile && | ||
git add newfile && | ||
git commit -a -m"side edits further." && | ||
tr "[a-m]" "[A-M]" <original >newfile && | ||
rm -f original && | ||
git commit -a -m"side edits once again." && | ||
git branch test-rebase side && | ||
git branch test-rebase-pick side && | ||
git branch test-reference-pick side && | ||
git checkout -b test-merge side | ||
' | ||
|
||
test_expect_success 'reference merge' ' | ||
git merge -s recursive "reference merge" HEAD master | ||
' | ||
|
||
test_expect_success rebase ' | ||
git checkout test-rebase && | ||
git rebase --merge master | ||
' | ||
|
||
test_expect_success 'merge and rebase should match' ' | ||
git diff-tree -r test-rebase test-merge >difference && | ||
if test -s difference | ||
then | ||
cat difference | ||
(exit 1) | ||
else | ||
echo happy | ||
fi | ||
' | ||
|
||
test_expect_success 'rebase the other way' ' | ||
git reset --hard master && | ||
git rebase --merge side | ||
' | ||
|
||
test_expect_success 'merge and rebase should match' ' | ||
git diff-tree -r test-rebase test-merge >difference && | ||
if test -s difference | ||
then | ||
cat difference | ||
(exit 1) | ||
else | ||
echo happy | ||
fi | ||
' | ||
|
||
test_expect_success 'picking rebase' ' | ||
git reset --hard side && | ||
git rebase --merge --onto master side^^ && | ||
mb=$(git merge-base master HEAD) && | ||
if test "$mb" = "$(git rev-parse master)" | ||
then | ||
echo happy | ||
else | ||
git show-branch | ||
(exit 1) | ||
fi && | ||
f=$(git diff-tree --name-only HEAD^ HEAD) && | ||
g=$(git diff-tree --name-only HEAD^^ HEAD^) && | ||
case "$f,$g" in | ||
newfile,newfile) | ||
echo happy ;; | ||
*) | ||
echo "$f" | ||
echo "$g" | ||
(exit 1) | ||
esac | ||
' | ||
|
||
test_done |