|  | #!/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" || return 1 | 
|  | 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 |