Subject: Re: [PATCH] bisect: remove root directory restriction for git bisect

From: SZEDER Gábor <[email-masked]>
Date: Sun, 22 Mar 2020 11:48:26 +0100

On Sun, Mar 22, 2020 at 09:15:47AM +0000, Sheikh hamza via GitGitGadget wrote:
> From: sheikh hamza <[email-masked]>
> 
>     according to the open issue #486

What issue #486?  Where?  The Git project doesn't use issues.

> the git bisect
>     command should be able to run from inside any
>     subdirectory

Why should 'git bisect' be able to run from inside any subdirectory
(of the working tree, I presume)?

In particular, what happens, if someone starts 'git bisect' from
within 'subdir/', and 'git bisect' then checks out an old commit,
where said 'subdir/' didn't exist?  What happens, if the user runs
'git bisect run ./script' from within 'subdir/', and that 'subdir/'
doesn't exist in that old commit?  What happens, if 'subdir' does
exists in that old commit, but it's a file, not a directory?  What
happens, if all this is on Windows?

> and in the same disscusion "dscho"
>     gave the directions and those directions lead me
>     the fix of adding SUBDIRECTORY_OK=Yes on L#34
>     before sourcing git-sh-setup that made it work as
>     in git-sh-setup there was a check on SUBDIRECTORY_OK
>     that prevents it to run in sub directories if it is not
>     set to "ok" as this file was also sourced in other commands
>     that are required to only run from root one of such scripts
>     is git-filter-branch

Please don't indent the commit message and use punctuation to make it
more readable.

> 
> Signed-off-by: sheikh hamza <[email-masked]>
> ---
>     bisect: remove root directory restriction for git bisect
>     
>     according to the open issue #486 the git bisect
>     command should be able to run from inside any
>     subdirectory and in the same disscusion "dscho"
>     gave the directions and those directions lead me
>     the fix of adding SUBDIRECTORY_OK=Yes on L#34
>     before sourcing git-sh-setup that made it work as
>     in git-sh-setup there was a check on SUBDIRECTORY_OK
>     that prevents it to run in sub directories if it is not
>     set to "ok" as this file was also sourced in other commands
>     that are required to only run from root one of such scripts
>     is git-filter-branch
> 
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-736%2Fsheikhhamza012%2Fbisect_subdirectory_fix-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-736/sheikhhamza012/bisect_subdirectory_fix-v1
> Pull-Request: https://github.com/git/git/pull/736
> 
>  git-bisect.sh            | 1 +
>  t/perf/bisect_regression | 6 ++----
>  2 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/git-bisect.sh b/git-bisect.sh
> index efee12b8b1e..8c1da200e41 100755
> --- a/git-bisect.sh
> +++ b/git-bisect.sh
> @@ -31,6 +31,7 @@ git bisect run <cmd>...
>  
>  Please use "git help bisect" to get the full man page.'
>  
> +SUBDIRECTORY_OK=Yes
>  OPTIONS_SPEC=
>  . git-sh-setup
>  
> diff --git a/t/perf/bisect_regression b/t/perf/bisect_regression
> index ce47e1662a9..d6b96f49e46 100755
> --- a/t/perf/bisect_regression
> +++ b/t/perf/bisect_regression
> @@ -57,11 +57,9 @@ tmpdir=$(mktemp -d -t bisect_regression_XXXXXX) || die "Failed to create temp di
>  echo "$oldtime" >"$tmpdir/oldtime" || die "Failed to write to '$tmpdir/oldtime'"
>  echo "$newtime" >"$tmpdir/newtime" || die "Failed to write to '$tmpdir/newtime'"
>  
> -# Bisecting must be performed from the top level directory (even with --no-checkout)
> -(
> -	toplevel_dir=$(git rev-parse --show-toplevel) || die "Failed to find top level directory"
> -	cd "$toplevel_dir" || die "Failed to cd into top level directory '$toplevel_dir'"
>  
> +(
> +	 
>  	git bisect start --no-checkout "$newrev" "$oldrev" || die "Failed to start bisecting"
>  
>  	git bisect run t/perf/bisect_run_script "$test_script" "$test_number" "$tmpdir"
> 
> base-commit: 98cedd0233ee88e69711f79d1126b6bd772ff5bd
> -- 
> gitgitgadget