Re: [PATCH v3 3/5] enter_repo: allow .git files in strict mode
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:06:42
Nguyễn Thái Ngọc Duy [off-list ref] writes:
quoted hunk
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 <redacted> --- 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(".");