-
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.
Signed-off-by: Junio C Hamano <junkio@cox.net>
- Loading branch information
Junio C Hamano
committed
Jun 21, 2006
1 parent
58634db
commit c3fb0e3
Showing
1 changed file
with
106 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2006 Junio C Hamano | ||
# | ||
|
||
test_description='git rebase --merge test' | ||
|
||
. ./test-lib.sh | ||
|
||
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 |