| #!/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 |