All of lore.kernel.org
 help / color / mirror / Atom feed
From: "René Scharfe" <l.s.r@web.de>
To: Johannes Schindelin <johannes.schindelin@gmx.de>, git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Eric Sunshine <sunshine@sunshineco.com>
Subject: Re: [PATCH v3 2/3] perf: make the tests work in worktrees
Date: Sun, 29 May 2016 18:43:41 +0200	[thread overview]
Message-ID: <574B1C3D.3000706@web.de> (raw)
In-Reply-To: <0f0bc7ac7b6eebed22b05c277cf7352122d164d2.1463145936.git.johannes.schindelin@gmx.de>

Am 13.05.2016 um 15:25 schrieb Johannes Schindelin:
> 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>
> ---
>   t/perf/perf-lib.sh | 14 +++++++-------
>   1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
> index 9fa0706..5ef1744 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
> 

This breaks perf for the non-worktree case:

lsr@debian:~/src/git/t/perf$ make
rm -rf test-results
./run
=== Running 12 tests in this tree ===
cp: cannot stat '.git/objects': No such file or directory
error: failed to copy repository '/home/lsr/src/git/t/..' to '/tmp/trash directory.p0000-perf-lib-sanity'
cp: cannot stat '.git/objects': No such file or directory
error: failed to copy repository '/home/lsr/src/git/t/..' to '/tmp/trash directory.p0001-rev-list'
...

Here's a fix:

-- >8 --
Subject: perf: make the tests work without a worktree

In regular repositories $source_git and $objects_dir contain relative
paths based on $source.  Go there to allow cp to resolve them.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
---
 t/perf/perf-lib.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 5ef1744..1888790 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -84,6 +84,7 @@ test_perf_create_repo_from () {
 	objects_dir="$(git -C "$source" rev-parse --git-path objects)"
 	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
-- 
2.8.3

  reply	other threads:[~2016-05-29 16:44 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-10 15:36 [PATCH 0/3] Introduce a perf test for interactive rebase Johannes Schindelin
2016-05-10 15:41 ` [PATCH 1/3] perf: let's disable symlinks on Windows Johannes Schindelin
2016-05-10 19:51   ` Junio C Hamano
2016-05-11  8:09     ` Johannes Schindelin
2016-05-10 15:42 ` [PATCH 2/3] perf: make the tests work in worktrees Johannes Schindelin
2016-05-10 20:28   ` Junio C Hamano
2016-05-11  8:08     ` Johannes Schindelin
2016-05-10 15:45 ` [PATCH 3/3] Add a perf test for rebase -i Johannes Schindelin
2016-05-11  8:31 ` [PATCH v2 0/3] Introduce a perf test for interactive rebase Johannes Schindelin
2016-05-11  8:42   ` [PATCH v2 3/3] Add a perf test for rebase -i Johannes Schindelin
2016-05-11 21:17     ` Junio C Hamano
2016-05-13 13:16       ` Johannes Schindelin
2016-05-11  8:42   ` [PATCH v2 2/3] perf: make the tests work in worktrees Johannes Schindelin
2016-05-11 17:40     ` Eric Sunshine
2016-05-13 13:14       ` Johannes Schindelin
2016-05-11  8:42   ` [PATCH v2 1/3] perf: let's disable symlinks when they are not available Johannes Schindelin
2016-05-13 13:25   ` [PATCH v3 0/3] Introduce a perf test for interactive rebase Johannes Schindelin
2016-05-13 13:25     ` [PATCH v3 1/3] perf: let's disable symlinks when they are not available Johannes Schindelin
2016-05-13 13:25     ` [PATCH v3 2/3] perf: make the tests work in worktrees Johannes Schindelin
2016-05-29 16:43       ` René Scharfe [this message]
2016-05-30  8:28         ` Johannes Schindelin
2016-05-30 18:03           ` Junio C Hamano
2016-05-30 18:24             ` René Scharfe
2016-05-31 21:24               ` Junio C Hamano
2016-06-21 19:25       ` Jeff King
2016-05-13 13:26     ` [PATCH v3 3/3] Add a perf test for rebase -i Johannes Schindelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=574B1C3D.3000706@web.de \
    --to=l.s.r@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.