| #!/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 |