зеркало из https://github.com/microsoft/git.git
Learn to handle gitfiles in enter_repo
The enter_repo() function is used to navigate into a .git directory. It knows how to find standard alternatives (DWIM) but it doesn't handle gitfiles created by git init --separate-git-dir. This means that git-fetch and others do not work with repositories using the separate-git-dir mechanism. Teach enter_repo() to deal with the gitfile mechanism by resolving the path to the redirected path and continuing tests on that path instead of the found file. Signed-off-by: Phil Hord <hordp@cisco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
1c64b48e67
Коммит
03106768af
8
path.c
8
path.c
|
@ -295,6 +295,7 @@ const char *enter_repo(const char *path, int strict)
|
|||
static const char *suffix[] = {
|
||||
".git/.git", "/.git", ".git", "", NULL,
|
||||
};
|
||||
const char *gitfile;
|
||||
int len = strlen(path);
|
||||
int i;
|
||||
while ((1 < len) && (path[len-1] == '/'))
|
||||
|
@ -329,7 +330,12 @@ const char *enter_repo(const char *path, int strict)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (!suffix[i] || chdir(used_path))
|
||||
if (!suffix[i])
|
||||
return NULL;
|
||||
gitfile = read_gitfile(used_path) ;
|
||||
if (gitfile)
|
||||
strcpy(used_path, gitfile);
|
||||
if (chdir(used_path))
|
||||
return NULL;
|
||||
path = validated_path;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче