diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-10-15 15:43:39 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-10-15 15:43:40 -0700 |
commit | b9d23c21104fd7eac8163b65248fae6e580291cc (patch) | |
tree | 3435670a764b0e87b14b598148b4a5a26941d7c3 /path.c | |
parent | 6652939ce8cacb147bce2f0c3503486915ca5a73 (diff) | |
parent | d78db8424ec5c3f3327441cd1a897064af39da91 (diff) | |
download | git-b9d23c21104fd7eac8163b65248fae6e580291cc.tar.gz |
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
Diffstat (limited to 'path.c')
-rw-r--r-- | path.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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; |