perf: add function to setup a fresh test repo
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 11 May 2017 09:41:07 +0000 (09:41 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 12 May 2017 01:07:42 +0000 (10:07 +0900)
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>
t/perf/README
t/perf/perf-lib.sh
index 49ea4349bedfc53b5b565cf1102c74ccb93ab653..de2fe1569603eac1316d7c5a7224e2617f0cb996 100644 (file)
@@ -106,6 +106,7 @@ sources perf-lib.sh:
 
 After that you will want to use some of the following:
 
+       test_perf_fresh_repo    # sets up an empty repository
        test_perf_default_repo  # sets up a "normal" repository
        test_perf_large_repo    # sets up a "large" repository
 
index ab4b8b06ae50c5e4ee7e128ded55dea7dddf7865..b6fc880395791c6f33577dc83387939ceb786bbf 100644 (file)
@@ -78,6 +78,10 @@ if test -z "$GIT_PERF_LARGE_REPO"; then
        GIT_PERF_LARGE_REPO=$TEST_DIRECTORY/..
 fi
 
+test_perf_do_repo_symlink_config_ () {
+       test_have_prereq SYMLINKS || git config core.symlinks false
+}
+
 test_perf_create_repo_from () {
        test "$#" = 2 ||
        error "bug in the test script: not 2 parameters to test-create-repo"
@@ -102,15 +106,22 @@ test_perf_create_repo_from () {
        ) &&
        (
                cd "$repo" &&
-               "$MODERN_GIT" init -q && {
-                       test_have_prereq SYMLINKS ||
-                       git config core.symlinks false
-               } &&
+               "$MODERN_GIT" init -q &&
+               test_perf_do_repo_symlink_config_ &&
                mv .git/hooks .git/hooks-disabled 2>/dev/null
        ) || error "failed to copy repository '$source' to '$repo'"
 }
 
 # call at least one of these to establish an appropriately-sized repository
+test_perf_fresh_repo () {
+       repo="${1:-$TRASH_DIRECTORY}"
+       "$MODERN_GIT" init -q "$repo" &&
+       (
+               cd "$repo" &&
+               test_perf_do_repo_symlink_config_
+       )
+}
+
 test_perf_default_repo () {
        test_perf_create_repo_from "${1:-$TRASH_DIRECTORY}" "$GIT_PERF_REPO"
 }