diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2016-05-13 15:25:58 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-05-13 11:04:07 -0700 |
commit | 7501b59210906c89747dca1c44e15d8c2214c01d (patch) | |
tree | 41d0965407e6c9edc3355426571dd94f9f6d5008 | |
parent | perf: let's disable symlinks when they are not available (diff) | |
download | tgif-7501b59210906c89747dca1c44e15d8c2214c01d.tar.xz |
perf: make the tests work in worktrees
This patch makes perf-lib.sh more robust so that it can run correctly
even inside a worktree. For example, it assumed that $GIT_DIR/objects is
the objects directory (which is not the case for worktrees) and it used
the commondir file verbatim, even if it contained a relative path.
Furthermore, the setup code expected `git rev-parse --git-dir` to spit
out a relative path, which is also not true for worktrees. Let's just
change the code to accept both relative and absolute paths, by avoiding
the `cd` into the copied working directory.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | t/perf/perf-lib.sh | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh index 9fa07066d1..5ef17440c0 100644 --- a/t/perf/perf-lib.sh +++ b/t/perf/perf-lib.sh @@ -80,22 +80,22 @@ test_perf_create_repo_from () { error "bug in the test script: not 2 parameters to test-create-repo" repo="$1" source="$2" - source_git=$source/$(cd "$source" && git rev-parse --git-dir) + source_git="$(git -C "$source" rev-parse --git-dir)" + objects_dir="$(git -C "$source" rev-parse --git-path objects)" mkdir -p "$repo/.git" ( - cd "$repo/.git" && - { cp -Rl "$source_git/objects" . 2>/dev/null || - cp -R "$source_git/objects" .; } && + { 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) + */objects|*/hooks|*/config|*/commondir) ;; *) - cp -R "$stuff" . || exit 1 + cp -R "$stuff" "$repo/.git/" || exit 1 ;; esac done && - cd .. && + cd "$repo" && git init -q && { test_have_prereq SYMLINKS || git config core.symlinks false |