| #!/bin/sh | 
 |  | 
 | test_description='fetching and pushing project with subproject' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success setup ' | 
 | 	test_tick && | 
 | 	mkdir -p sub && ( | 
 | 		cd sub && | 
 | 		git init && | 
 | 		>subfile && | 
 | 		git add subfile && | 
 | 		git commit -m "subproject commit #1" | 
 | 	) && | 
 | 	>mainfile && | 
 | 	git add sub mainfile && | 
 | 	test_tick && | 
 | 	git commit -m "superproject commit #1" | 
 | ' | 
 |  | 
 | test_expect_success clone ' | 
 | 	git clone "file://$(pwd)/.git" cloned && | 
 | 	(git rev-parse HEAD; git ls-files -s) >expected && | 
 | 	( | 
 | 		cd cloned && | 
 | 		(git rev-parse HEAD; git ls-files -s) >../actual | 
 | 	) && | 
 | 	test_cmp expected actual | 
 | ' | 
 |  | 
 | test_expect_success advance ' | 
 | 	echo more >mainfile && | 
 | 	git update-index --force-remove sub && | 
 | 	mv sub/.git sub/.git-disabled && | 
 | 	git add sub/subfile mainfile && | 
 | 	mv sub/.git-disabled sub/.git && | 
 | 	test_tick && | 
 | 	git commit -m "superproject commit #2" | 
 | ' | 
 |  | 
 | test_expect_success fetch ' | 
 | 	(git rev-parse HEAD; git ls-files -s) >expected && | 
 | 	( | 
 | 		cd cloned && | 
 | 		git pull && | 
 | 		(git rev-parse HEAD; git ls-files -s) >../actual | 
 | 	) && | 
 | 	test_cmp expected actual | 
 | ' | 
 |  | 
 | test_done |