Skip to content
Permalink
853563d734
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 109 lines (90 sloc) 1.92 KB
#!/bin/sh
test_description='git rebase - test patch id computation'
. ./test-lib.sh
test_set_prereq NOT_EXPENSIVE
test -n "$GIT_PATCHID_TIMING_TESTS" && test_set_prereq EXPENSIVE
test -x /usr/bin/time && test_set_prereq USR_BIN_TIME
count()
{
i=0
while test $i -lt $1
do
echo "$i"
i=$(($i+1))
done
}
scramble()
{
i=0
while read x
do
if test $i -ne 0
then
echo "$x"
fi
i=$((($i+1) % 10))
done < "$1" > "$1.new"
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()
{
pr=$1
nlines=$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 $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 &&
test_must_fail test -n \"\$(git rev-list master...HEAD~)\"
"
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 &&
rm -rf .git/rebase-apply
"
}
do_tests NOT_EXPENSIVE 500
do_tests EXPENSIVE 50000
test_done