| #!/bin/sh | 
 | test_description='test git fast-import unpack limit' | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'create loose objects on import' ' | 
 | 	test_tick && | 
 | 	cat >input <<-INPUT_END && | 
 | 	commit refs/heads/master | 
 | 	committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE | 
 | 	data <<COMMIT | 
 | 	initial | 
 | 	COMMIT | 
 |  | 
 | 	done | 
 | 	INPUT_END | 
 |  | 
 | 	git -c fastimport.unpackLimit=2 fast-import --done <input && | 
 | 	git fsck --no-progress && | 
 | 	test $(find .git/objects/?? -type f | wc -l) -eq 2 && | 
 | 	test $(find .git/objects/pack -type f | wc -l) -eq 0 | 
 | ' | 
 |  | 
 | test_expect_success 'bigger packs are preserved' ' | 
 | 	test_tick && | 
 | 	cat >input <<-INPUT_END && | 
 | 	commit refs/heads/master | 
 | 	committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE | 
 | 	data <<COMMIT | 
 | 	incremental should create a pack | 
 | 	COMMIT | 
 | 	from refs/heads/master^0 | 
 |  | 
 | 	commit refs/heads/branch | 
 | 	committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE | 
 | 	data <<COMMIT | 
 | 	branch | 
 | 	COMMIT | 
 |  | 
 | 	done | 
 | 	INPUT_END | 
 |  | 
 | 	git -c fastimport.unpackLimit=2 fast-import --done <input && | 
 | 	git fsck --no-progress && | 
 | 	test $(find .git/objects/?? -type f | wc -l) -eq 2 && | 
 | 	test $(find .git/objects/pack -type f | wc -l) -eq 2 | 
 | ' | 
 |  | 
 | test_expect_success 'lookups after checkpoint works' ' | 
 | 	hello_id=$(echo hello | git hash-object --stdin -t blob) && | 
 | 	id="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" && | 
 | 	before=$(git rev-parse refs/heads/master^0) && | 
 | 	( | 
 | 		cat <<-INPUT_END && | 
 | 		blob | 
 | 		mark :1 | 
 | 		data 6 | 
 | 		hello | 
 |  | 
 | 		commit refs/heads/master | 
 | 		mark :2 | 
 | 		committer $id | 
 | 		data <<COMMIT | 
 | 		checkpoint after this | 
 | 		COMMIT | 
 | 		from refs/heads/master^0 | 
 | 		M 100644 :1 hello | 
 |  | 
 | 		# pre-checkpoint | 
 | 		cat-blob :1 | 
 | 		cat-blob $hello_id | 
 | 		checkpoint | 
 | 		# post-checkpoint | 
 | 		cat-blob :1 | 
 | 		cat-blob $hello_id | 
 | 		INPUT_END | 
 |  | 
 | 		n=0 && | 
 | 		from=$before && | 
 | 		while test x"$from" = x"$before" | 
 | 		do | 
 | 			if test $n -gt 30 | 
 | 			then | 
 | 				echo >&2 "checkpoint did not update branch" && | 
 | 				exit 1 | 
 | 			else | 
 | 				n=$(($n + 1)) | 
 | 			fi && | 
 | 			sleep 1 && | 
 | 			from=$(git rev-parse refs/heads/master^0) | 
 | 		done && | 
 | 		cat <<-INPUT_END && | 
 | 		commit refs/heads/master | 
 | 		committer $id | 
 | 		data <<COMMIT | 
 | 		make sure from "unpacked sha1 reference" works, too | 
 | 		COMMIT | 
 | 		from $from | 
 | 		INPUT_END | 
 | 		echo done | 
 | 	) | git -c fastimport.unpackLimit=100 fast-import --done && | 
 | 	test $(find .git/objects/?? -type f | wc -l) -eq 6 && | 
 | 	test $(find .git/objects/pack -type f | wc -l) -eq 2 | 
 | ' | 
 |  | 
 | test_done |