40 lines
		
	
	
	
		
			698 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			698 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='Test fsck skipList performance'
 | 
						|
 | 
						|
. ./perf-lib.sh
 | 
						|
 | 
						|
test_perf_fresh_repo
 | 
						|
 | 
						|
n=1000000
 | 
						|
 | 
						|
test_expect_success "setup $n bad commits" '
 | 
						|
	for i in $(test_seq 1 $n)
 | 
						|
	do
 | 
						|
		echo "commit refs/heads/master" &&
 | 
						|
		echo "committer C <c@example.com> 1234567890 +0000" &&
 | 
						|
		echo "data <<EOF" &&
 | 
						|
		echo "$i.Q." &&
 | 
						|
		echo "EOF"
 | 
						|
	done | q_to_nul | git fast-import
 | 
						|
'
 | 
						|
 | 
						|
skip=0
 | 
						|
while test $skip -le $n
 | 
						|
do
 | 
						|
	test_expect_success "create skipList for $skip bad commits" '
 | 
						|
		git log --format=%H --max-count=$skip |
 | 
						|
		sort >skiplist
 | 
						|
	'
 | 
						|
 | 
						|
	test_perf "fsck with $skip skipped bad commits" '
 | 
						|
		git -c fsck.skipList=skiplist fsck
 | 
						|
	'
 | 
						|
 | 
						|
	case $skip in
 | 
						|
	0) skip=1 ;;
 | 
						|
	*) skip=${skip}0 ;;
 | 
						|
	esac
 | 
						|
done
 | 
						|
 | 
						|
test_done
 |