Subject: Re: [PATCH v3 17/25] setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()

From: Junio C Hamano <[email-masked]>
Date: Wed, 26 Feb 2014 16:22:56 -0800

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

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

It is a good thing to do to read config from the real repository we
are borrowing from when we have .git/commondir, but it makes me
wonder if we should signal some kind of error if we find .git/config
in such a borrowing repository---which will be silently ignored.

My gut feeling is that such a check may be necessary, but may not
belong to this function.

>  setup.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/setup.c b/setup.c
> index 282fdc9..e56ec11 100644
> --- a/setup.c
> +++ b/setup.c
> @@ -285,6 +285,10 @@ static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
>  	const char *repo_config;
>  	int ret = 0;
>  
> +	get_common_dir(&sb, gitdir);
> +	strbuf_addstr(&sb, "/config");
> +	repo_config = sb.buf;
> +
>  	/*
>  	 * git_config() can't be used here because it calls git_pathdup()
>  	 * to get $GIT_CONFIG/config. That call will make setup_git_env()
> @@ -294,8 +298,6 @@ static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
>  	 * Use a gentler version of git_config() to check if this repo
>  	 * is a good one.
>  	 */
> -	strbuf_addf(&sb, "%s/config", gitdir);
> -	repo_config = sb.buf;
>  	git_config_early(check_repository_format_version, NULL, repo_config);
>  	if (GIT_REPO_VERSION < repository_format_version) {
>  		if (!nongit_ok)