71 lines
1.4 KiB
Bash
Executable File
71 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='fetch/push involving alternates'
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./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
|