Merge branch 'nd/clone-linked-checkout'

It was not possible to use a repository-lookalike created by "git
worktree add" as a local source of "git clone".

* nd/clone-linked-checkout:
  clone: better error when --reference is a linked checkout
  clone: allow --local from a linked checkout
  enter_repo: allow .git files in strict mode
  enter_repo: avoid duplicating logic, use is_git_directory() instead
  t0002: add test for enter_repo(), non-strict mode
  path.c: delete an extra space
This commit is contained in:
Junio C Hamano
2015-10-15 15:43:39 -07:00
4 changed files with 65 additions and 7 deletions

12
path.c
View File

@ -668,11 +668,15 @@ 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(path);
if (gitfile)
path = gitfile;
if (chdir(path))
return NULL;
}
if (access("objects", X_OK) == 0 && access("refs", X_OK) == 0 &&
validate_headref("HEAD") == 0) {
if (is_git_directory(".")) {
set_git_dir(".");
check_repository_format();
return path;