Subject: Re: [PATCH v3 3/5] enter_repo: allow .git files in strict mode

From: Junio C Hamano <[email-masked]>
Date: Fri, 25 Sep 2015 12:59:17 -0700

Nguyễn Thái Ngọc Duy  <[email-masked]> writes:

> Strict mode is about not guessing where .git is. If the user points to a
> .git file, we know exactly where the target .git dir will be.
>
> This is needed even in local clone case because transport.c code uses
> upload-pack for fetching remote refs.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <[email-masked]>
> ---
>  path.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/path.c b/path.c
> index 7340e11..32d4ca6 100644
> --- a/path.c
> +++ b/path.c
> @@ -438,8 +438,13 @@ const char *enter_repo(const char *path, int strict)
>  			return NULL;
>  		path = validated_path;
>  	}
> -	else if (chdir(path))
> -		return NULL;
> +	else {
> +		const char *gitfile = read_gitfile(used_path);

At this point, used_path[] has not been touched since this function
was called.  What file are we reading from?

Is that just a typo of used_path?  Do we lack test that cover this
codepath?

Thanks.

> +		if (gitfile)
> +			path = gitfile;
> +		if (chdir(path))
> +			return NULL;
> +	}
>  
>  	if (is_git_directory(".")) {
>  		set_git_dir(".");