|  | #!/bin/sh | 
|  |  | 
|  | case "$1" in | 
|  | --help) | 
|  | echo "usage: $0 [other_git_tree...] [--] [test_scripts]" | 
|  | exit 0 | 
|  | ;; | 
|  | esac | 
|  |  | 
|  | die () { | 
|  | echo >&2 "error: $*" | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | run_one_dir () { | 
|  | if test $# -eq 0; then | 
|  | set -- p????-*.sh | 
|  | fi | 
|  | echo "=== Running $# tests in ${GIT_TEST_INSTALLED:-this tree} ===" | 
|  | for t in "$@"; do | 
|  | ./$t $GIT_TEST_OPTS | 
|  | done | 
|  | } | 
|  |  | 
|  | unpack_git_rev () { | 
|  | rev=$1 | 
|  | mkdir -p build/$rev | 
|  | (cd "$(git rev-parse --show-cdup)" && git archive --format=tar $rev) | | 
|  | (cd build/$rev && tar x) | 
|  | } | 
|  | build_git_rev () { | 
|  | rev=$1 | 
|  | cp ../../config.mak build/$rev/config.mak | 
|  | (cd build/$rev && make $GIT_PERF_MAKE_OPTS) || | 
|  | die "failed to build revision '$mydir'" | 
|  | } | 
|  |  | 
|  | run_dirs_helper () { | 
|  | mydir=${1%/} | 
|  | shift | 
|  | while test $# -gt 0 -a "$1" != -- -a ! -f "$1"; do | 
|  | shift | 
|  | done | 
|  | if test $# -gt 0 -a "$1" = --; then | 
|  | shift | 
|  | fi | 
|  | if [ ! -d "$mydir" ]; then | 
|  | rev=$(git rev-parse --verify "$mydir" 2>/dev/null) || | 
|  | die "'$mydir' is neither a directory nor a valid revision" | 
|  | if [ ! -d build/$rev ]; then | 
|  | unpack_git_rev $rev | 
|  | fi | 
|  | build_git_rev $rev | 
|  | mydir=build/$rev | 
|  | fi | 
|  | if test "$mydir" = .; then | 
|  | unset GIT_TEST_INSTALLED | 
|  | else | 
|  | GIT_TEST_INSTALLED="$mydir/bin-wrappers" | 
|  | export GIT_TEST_INSTALLED | 
|  | fi | 
|  | run_one_dir "$@" | 
|  | } | 
|  |  | 
|  | run_dirs () { | 
|  | while test $# -gt 0 -a "$1" != -- -a ! -f "$1"; do | 
|  | run_dirs_helper "$@" | 
|  | shift | 
|  | done | 
|  | } | 
|  |  | 
|  | GIT_PERF_AGGREGATING_LATER=t | 
|  | export GIT_PERF_AGGREGATING_LATER | 
|  |  | 
|  | cd "$(dirname $0)" | 
|  | . ../../GIT-BUILD-OPTIONS | 
|  |  | 
|  | if test $# = 0 -o "$1" = -- -o -f "$1"; then | 
|  | set -- . "$@" | 
|  | fi | 
|  | run_dirs "$@" | 
|  | ./aggregate.perl "$@" |