|  | #!/bin/sh | 
|  | # | 
|  | # This test measures the performance of various read-tree | 
|  | # and status operations.  It is primarily interested in | 
|  | # the algorithmic costs of index operations and recursive | 
|  | # tree traversal -- and NOT disk I/O on thousands of files. | 
|  |  | 
|  | test_description="Tests performance of read-tree" | 
|  |  | 
|  | . ./perf-lib.sh | 
|  |  | 
|  | test_perf_default_repo | 
|  |  | 
|  | # If the test repo was generated by ./repos/many-files.sh | 
|  | # then we know something about the data shape and branches, | 
|  | # so we can isolate testing to the ballast-related commits | 
|  | # and setup sparse-checkout so we don't have to populate | 
|  | # the ballast files and directories. | 
|  | # | 
|  | # Otherwise, we make some general assumptions about the | 
|  | # repo and consider the entire history of the current | 
|  | # branch to be the ballast. | 
|  |  | 
|  | test_expect_success "setup repo" ' | 
|  | if git rev-parse --verify refs/heads/p0006-ballast^{commit} | 
|  | then | 
|  | echo Assuming synthetic repo from many-files.sh && | 
|  | git branch br_base            master && | 
|  | git branch br_ballast         p0006-ballast && | 
|  | git config --local core.sparsecheckout 1 && | 
|  | cat >.git/info/sparse-checkout <<-EOF | 
|  | /* | 
|  | !ballast/* | 
|  | EOF | 
|  | else | 
|  | echo Assuming non-synthetic repo... && | 
|  | git branch br_base            $(git rev-list HEAD | tail -n 1) && | 
|  | git branch br_ballast         HEAD | 
|  | fi && | 
|  | git checkout -q br_ballast && | 
|  | nr_files=$(git ls-files | wc -l) | 
|  | ' | 
|  |  | 
|  | test_perf "read-tree status br_ballast ($nr_files)" ' | 
|  | git read-tree HEAD && | 
|  | git status | 
|  | ' | 
|  |  | 
|  | test_done |