mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
Add renaming-rebase test.
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
58634dbff8
commit
c3fb0e358e
106
t/t3402-rebase-merge.sh
Executable file
106
t/t3402-rebase-merge.sh
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user