70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			70 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-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
 |