106 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
#!/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
 |