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);
+ if (gitfile)
+ path = gitfile;
+ if (chdir(path))
+ return NULL;
+ }
if (is_git_directory(".")) {
set_git_dir(".");--
2.3.0.rc1.137.g477eb31