Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- cache.h | 1 + setup.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cache.h b/cache.h index fbe29ac..c912afb 100644 --- a/cache.h +++ b/cache.h @@ -1728,6 +1728,7 @@ const char *split_cmdline_strerror(int cmdline_errno); struct startup_info { int have_repository; const char *prefix; + const char *first_gitfile; }; extern struct startup_info *startup_info; diff --git a/setup.c b/setup.c index 8b02429..0489f54 100644 --- a/setup.c +++ b/setup.c @@ -550,6 +550,8 @@ static const char *setup_explicit_git_dir(const char *gitdirenv, gitfile = (char*)read_gitfile(gitdirenv); if (gitfile) { gitfile = xstrdup(gitfile); + if (startup_info && !startup_info->first_gitfile) + startup_info->first_gitfile = real_path_dup(gitdirenv); gitdirenv = gitfile; } @@ -834,9 +836,12 @@ static const char *setup_git_directory_gently_1(int *nongit_ok) current_device = get_device_or_die(".", NULL, 0); for (;;) { gitfile = (char*)read_gitfile(DEFAULT_GIT_DIR_ENVIRONMENT); - if (gitfile) + if (gitfile) { gitdirenv = gitfile = xstrdup(gitfile); - else { + if (startup_info && !startup_info->first_gitfile) + startup_info->first_gitfile = + real_path_dup(DEFAULT_GIT_DIR_ENVIRONMENT); + } else { if (is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT)) gitdirenv = DEFAULT_GIT_DIR_ENVIRONMENT; } @@ -885,6 +890,9 @@ const char *setup_git_directory_gently(int *nongit_ok) { const char *prefix; + if (startup_info) + startup_info->first_gitfile = NULL; + prefix = setup_git_directory_gently_1(nongit_ok); if (prefix) setenv(GIT_PREFIX_ENVIRONMENT, prefix, 1); -- 2.7.0.96.g5373197 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html