| #!/bin/sh | 
 |  | 
 | test_description='git receive-pack with alternate ref filtering' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup' ' | 
 | 	test_commit base && | 
 | 	git clone -s --bare . fork && | 
 | 	git checkout -b public/branch master && | 
 | 	test_commit public && | 
 | 	git checkout -b private/branch master && | 
 | 	test_commit private | 
 | ' | 
 |  | 
 | extract_haves () { | 
 | 	depacketize | perl -lne '/^(\S+) \.have/ and print $1' | 
 | } | 
 |  | 
 | test_expect_success 'with core.alternateRefsCommand' ' | 
 | 	write_script fork/alternate-refs <<-\EOF && | 
 | 		git --git-dir="$1" for-each-ref \ | 
 | 			--format="%(objectname)" \ | 
 | 			refs/heads/public/ | 
 | 	EOF | 
 | 	test_config -C fork core.alternateRefsCommand ./alternate-refs && | 
 | 	git rev-parse public/branch >expect && | 
 | 	printf "0000" | git receive-pack fork >actual && | 
 | 	extract_haves <actual >actual.haves && | 
 | 	test_cmp expect actual.haves | 
 | ' | 
 |  | 
 | test_expect_success 'with core.alternateRefsPrefixes' ' | 
 | 	test_config -C fork core.alternateRefsPrefixes "refs/heads/private" && | 
 | 	git rev-parse private/branch >expect && | 
 | 	printf "0000" | git receive-pack fork >actual && | 
 | 	extract_haves <actual >actual.haves && | 
 | 	test_cmp expect actual.haves | 
 | ' | 
 |  | 
 | test_done |