perf: add function to setup a fresh test repo

Add a function to setup a fresh test repo via 'git init' to compliment the existing functions to copy over a normal & large repo. Some performance tests don't need any existing repository data at all to be significant, e.g. tests which stress glob matches against single pathological revisions or files, which I'm about to add in a subsequent commit. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed May 11, 2017 at 09:41 UTC 91de27c54a6ede76b3859bc89f4c387705025f6e
2 files changed +16 -4
t/perf/README
+1
@@ -106,6 +106,7 @@ sources perf-lib.sh:
106
107 After that you will want to use some of the following:
108
109 + test_perf_fresh_repo # sets up an empty repository
110 test_perf_default_repo # sets up a "normal" repository
111 test_perf_large_repo # sets up a "large" repository
112
t/perf/perf-lib.sh
+15 -4
@@ -78,6 +78,10 @@ if test -z "$GIT_PERF_LARGE_REPO"; then
78 GIT_PERF_LARGE_REPO=$TEST_DIRECTORY/..
79 fi
80
81 +test_perf_do_repo_symlink_config_ () {
82 + test_have_prereq SYMLINKS || git config core.symlinks false
83 +}
84 +
85 test_perf_create_repo_from () {
86 test "$#" = 2 ||
87 error "bug in the test script: not 2 parameters to test-create-repo"
@@ -102,15 +106,22 @@ test_perf_create_repo_from () {
106 ) &&
107 (
108 cd "$repo" &&
105 - "$MODERN_GIT" init -q && {
106 - test_have_prereq SYMLINKS ||
107 - git config core.symlinks false
108 - } &&
109 + "$MODERN_GIT" init -q &&
110 + test_perf_do_repo_symlink_config_ &&
111 mv .git/hooks .git/hooks-disabled 2>/dev/null
112 ) || error "failed to copy repository '$source' to '$repo'"
113 }
114
115 # call at least one of these to establish an appropriately-sized repository
116 +test_perf_fresh_repo () {
117 + repo="${1:-$TRASH_DIRECTORY}"
118 + "$MODERN_GIT" init -q "$repo" &&
119 + (
120 + cd "$repo" &&
121 + test_perf_do_repo_symlink_config_
122 + )
123 +}
124 +
125 test_perf_default_repo () {
126 test_perf_create_repo_from "${1:-$TRASH_DIRECTORY}" "$GIT_PERF_REPO"
127 }