|
|
|
@ -4,15 +4,6 @@ test_description='git rebase - test patch id computation'
@@ -4,15 +4,6 @@ test_description='git rebase - test patch id computation'
|
|
|
|
|
|
|
|
|
|
. ./test-lib.sh |
|
|
|
|
|
|
|
|
|
count () { |
|
|
|
|
i=0 |
|
|
|
|
while test $i -lt $1 |
|
|
|
|
do |
|
|
|
|
echo "$i" |
|
|
|
|
i=$(($i+1)) |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
scramble () { |
|
|
|
|
i=0 |
|
|
|
|
while read x |
|
|
|
@ -26,76 +17,55 @@ scramble () {
@@ -26,76 +17,55 @@ scramble () {
|
|
|
|
|
mv -f "$1.new" "$1" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
run () { |
|
|
|
|
echo \$ "$@" |
|
|
|
|
/usr/bin/time "$@" >/dev/null |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
test_expect_success 'setup' ' |
|
|
|
|
git commit --allow-empty -m initial && |
|
|
|
|
git tag root |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
do_tests () { |
|
|
|
|
nlines=$1 pr=${2-} |
|
|
|
|
|
|
|
|
|
test_expect_success $pr "setup: $nlines lines" " |
|
|
|
|
rm -f .gitattributes && |
|
|
|
|
git checkout -q -f master && |
|
|
|
|
git reset --hard root && |
|
|
|
|
count $nlines >file && |
|
|
|
|
git add file && |
|
|
|
|
git commit -q -m initial && |
|
|
|
|
git branch -f other && |
|
|
|
|
|
|
|
|
|
scramble file && |
|
|
|
|
git add file && |
|
|
|
|
git commit -q -m 'change big file' && |
|
|
|
|
|
|
|
|
|
git checkout -q other && |
|
|
|
|
: >newfile && |
|
|
|
|
git add newfile && |
|
|
|
|
git commit -q -m 'add small file' && |
|
|
|
|
|
|
|
|
|
git cherry-pick master >/dev/null 2>&1 |
|
|
|
|
" |
|
|
|
|
|
|
|
|
|
test_debug " |
|
|
|
|
run git diff master^\! |
|
|
|
|
" |
|
|
|
|
|
|
|
|
|
test_expect_success $pr 'setup attributes' " |
|
|
|
|
echo 'file binary' >.gitattributes |
|
|
|
|
" |
|
|
|
|
|
|
|
|
|
test_debug " |
|
|
|
|
run git format-patch --stdout master && |
|
|
|
|
run git format-patch --stdout --ignore-if-in-upstream master |
|
|
|
|
" |
|
|
|
|
test_expect_success 'setup: 500 lines' ' |
|
|
|
|
rm -f .gitattributes && |
|
|
|
|
git checkout -q -f master && |
|
|
|
|
git reset --hard root && |
|
|
|
|
test_seq 500 >file && |
|
|
|
|
git add file && |
|
|
|
|
git commit -q -m initial && |
|
|
|
|
git branch -f other && |
|
|
|
|
|
|
|
|
|
scramble file && |
|
|
|
|
git add file && |
|
|
|
|
git commit -q -m "change big file" && |
|
|
|
|
|
|
|
|
|
git checkout -q other && |
|
|
|
|
: >newfile && |
|
|
|
|
git add newfile && |
|
|
|
|
git commit -q -m "add small file" && |
|
|
|
|
|
|
|
|
|
git cherry-pick master >/dev/null 2>&1 |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
test_expect_success $pr 'detect upstream patch' ' |
|
|
|
|
git checkout -q master && |
|
|
|
|
scramble file && |
|
|
|
|
git add file && |
|
|
|
|
git commit -q -m "change big file again" && |
|
|
|
|
git checkout -q other^{} && |
|
|
|
|
git rebase master && |
|
|
|
|
git rev-list master...HEAD~ >revs && |
|
|
|
|
test_must_be_empty revs |
|
|
|
|
' |
|
|
|
|
test_expect_success 'setup attributes' ' |
|
|
|
|
echo "file binary" >.gitattributes |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
test_expect_success $pr 'do not drop patch' ' |
|
|
|
|
git branch -f squashed master && |
|
|
|
|
git checkout -q -f squashed && |
|
|
|
|
git reset -q --soft HEAD~2 && |
|
|
|
|
git commit -q -m squashed && |
|
|
|
|
git checkout -q other^{} && |
|
|
|
|
test_must_fail git rebase squashed && |
|
|
|
|
git rebase --quit |
|
|
|
|
' |
|
|
|
|
} |
|
|
|
|
test_expect_success 'detect upstream patch' ' |
|
|
|
|
git checkout -q master && |
|
|
|
|
scramble file && |
|
|
|
|
git add file && |
|
|
|
|
git commit -q -m "change big file again" && |
|
|
|
|
git checkout -q other^{} && |
|
|
|
|
git rebase master && |
|
|
|
|
git rev-list master...HEAD~ >revs && |
|
|
|
|
test_must_be_empty revs |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
do_tests 500 |
|
|
|
|
do_tests 50000 EXPENSIVE |
|
|
|
|
test_expect_success 'do not drop patch' ' |
|
|
|
|
git branch -f squashed master && |
|
|
|
|
git checkout -q -f squashed && |
|
|
|
|
git reset -q --soft HEAD~2 && |
|
|
|
|
git commit -q -m squashed && |
|
|
|
|
git checkout -q other^{} && |
|
|
|
|
test_must_fail git rebase squashed && |
|
|
|
|
git rebase --quit |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
test_done |
|
|
|
|