diff options
author | Junio C Hamano <gitster@pobox.com> | 2021-03-22 14:00:23 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-03-22 14:00:23 -0700 |
commit | e8d5a423ca1af3d0ef863ce72108af181e9dd8fd (patch) | |
tree | ecca51473c51b9f9389ee1b07addb05c1908dafc /t | |
parent | Merge branch 'ds/commit-graph-generation-config' (diff) | |
parent | t/perf: avoid copying worktree files from test repo (diff) | |
download | tgif-e8d5a423ca1af3d0ef863ce72108af181e9dd8fd.tar.xz |
Merge branch 'jk/perf-in-worktrees'
Perf test update to work better in secondary worktrees.
* jk/perf-in-worktrees:
t/perf: avoid copying worktree files from test repo
t/perf: handle worktrees as test repos
Diffstat (limited to 't')
-rw-r--r-- | t/perf/perf-lib.sh | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh index e385c6896f..601d9f67dd 100644 --- a/t/perf/perf-lib.sh +++ b/t/perf/perf-lib.sh @@ -70,6 +70,19 @@ test_perf_do_repo_symlink_config_ () { test_have_prereq SYMLINKS || git config core.symlinks false } +test_perf_copy_repo_contents () { + for stuff in "$1"/* + do + case "$stuff" in + */objects|*/hooks|*/config|*/commondir|*/gitdir|*/worktrees) + ;; + *) + cp -R "$stuff" "$repo/.git/" || exit 1 + ;; + esac + done +} + test_perf_create_repo_from () { test "$#" = 2 || BUG "not 2 parameters to test-create-repo" @@ -77,20 +90,20 @@ test_perf_create_repo_from () { source="$2" source_git="$("$MODERN_GIT" -C "$source" rev-parse --git-dir)" objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)" + common_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-common-dir)" mkdir -p "$repo/.git" ( cd "$source" && { cp -Rl "$objects_dir" "$repo/.git/" 2>/dev/null || cp -R "$objects_dir" "$repo/.git/"; } && - for stuff in "$source_git"/*; do - case "$stuff" in - */objects|*/hooks|*/config|*/commondir) - ;; - *) - cp -R "$stuff" "$repo/.git/" || exit 1 - ;; - esac - done + + # common_dir must come first here, since we want source_git to + # take precedence and overwrite any overlapping files + test_perf_copy_repo_contents "$common_dir" + if test "$source_git" != "$common_dir" + then + test_perf_copy_repo_contents "$source_git" + fi ) && ( cd "$repo" && |