Merge branch 'jk/reflog-walk-maint'
[gitweb.git] / t / perf / perf-lib.sh
index ab4b8b06ae50c5e4ee7e128ded55dea7dddf7865..b50211b2591d19904fa3c995b01aea2121db476a 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,29 @@ test_perf_create_repo_from () {
        ) &&
        (
                cd "$repo" &&
-               "$MODERN_GIT" init -q && {
-                       test_have_prereq SYMLINKS ||
-                       git config core.symlinks false
-               } &&
-               mv .git/hooks .git/hooks-disabled 2>/dev/null
+               "$MODERN_GIT" init -q &&
+               test_perf_do_repo_symlink_config_ &&
+               mv .git/hooks .git/hooks-disabled 2>/dev/null &&
+               if test -f .git/index.lock
+               then
+                       # We may be copying a repo that can't run "git
+                       # status" due to a locked index. Since we have
+                       # a copy it's fine to remove the lock.
+                       rm .git/index.lock
+               fi
        ) || 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"
 }