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