git/t/t5501-fetch-push-alternates.sh
Junio C Hamano e52d719266 fetch-pack: objects in our alternates are available to us
Use the helper function split from the receiving end of "git push" to
allow the same optimization on the receiving end of "git fetch".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
2011-03-17 16:18:55 -07:00

67 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
test_description='fetch/push involving alternates'
. ./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 master: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 master:refs/heads/it &&
count_objects >../fetcher.count
) &&
test_cmp one.count fetcher.count
'
test_done