You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
#!/bin/sh |
|
|
|
test_description='fetch/push involving alternates' |
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
|
|
|
. ./test-lib.sh |
|
|
|
count_objects () { |
|
loose=0 inpack=0 |
|
eval "$( |
|
git count-objects -v | |
|
sed -n -e 's/^count: \(.*\)/loose=\1/p' \ |
|
-e 's/^in-pack: \(.*\)/inpack=\1/p' |
|
)" && |
|
echo $(( $loose + $inpack )) |
|
} |
|
|
|
|
|
test_expect_success setup ' |
|
( |
|
git init original && |
|
cd original && |
|
i=0 && |
|
while test $i -le 100 |
|
do |
|
echo "$i" >count && |
|
git add count && |
|
git commit -m "$i" || exit |
|
i=$(($i + 1)) |
|
done |
|
) && |
|
( |
|
git clone --reference=original "file://$(pwd)/original" one && |
|
cd one && |
|
echo Z >count && |
|
git add count && |
|
git commit -m Z && |
|
count_objects >../one.count |
|
) && |
|
A=$(pwd)/original/.git/objects && |
|
git init receiver && |
|
echo "$A" >receiver/.git/objects/info/alternates && |
|
git init fetcher && |
|
echo "$A" >fetcher/.git/objects/info/alternates |
|
' |
|
|
|
test_expect_success 'pushing into a repository with the same alternate' ' |
|
( |
|
cd one && |
|
git push ../receiver main:refs/heads/it |
|
) && |
|
( |
|
cd receiver && |
|
count_objects >../receiver.count |
|
) && |
|
test_cmp one.count receiver.count |
|
' |
|
|
|
test_expect_success 'fetching from a repository with the same alternate' ' |
|
( |
|
cd fetcher && |
|
git fetch ../one main:refs/heads/it && |
|
count_objects >../fetcher.count |
|
) && |
|
test_cmp one.count fetcher.count |
|
' |
|
|
|
test_done
|
|
|