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:
@ -294,9 +294,14 @@ static int add_one_reference(struct string_list_item *item, void *cb_data)
|
||||
char *ref_git_git = mkpathdup("%s/.git", ref_git);
|
||||
free(ref_git);
|
||||
ref_git = ref_git_git;
|
||||
} else if (!is_directory(mkpath("%s/objects", ref_git)))
|
||||
} else if (!is_directory(mkpath("%s/objects", ref_git))) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
if (get_common_dir(&sb, ref_git))
|
||||
die(_("reference repository '%s' as a linked checkout is not supported yet."),
|
||||
item->string);
|
||||
die(_("reference repository '%s' is not a local repository."),
|
||||
item->string);
|
||||
}
|
||||
|
||||
if (!access(mkpath("%s/shallow", ref_git), F_OK))
|
||||
die(_("reference repository '%s' is shallow"), item->string);
|
||||
@ -424,8 +429,10 @@ static void clone_local(const char *src_repo, const char *dest_repo)
|
||||
} else {
|
||||
struct strbuf src = STRBUF_INIT;
|
||||
struct strbuf dest = STRBUF_INIT;
|
||||
strbuf_addf(&src, "%s/objects", src_repo);
|
||||
strbuf_addf(&dest, "%s/objects", dest_repo);
|
||||
get_common_dir(&src, src_repo);
|
||||
get_common_dir(&dest, dest_repo);
|
||||
strbuf_addstr(&src, "/objects");
|
||||
strbuf_addstr(&dest, "/objects");
|
||||
copy_or_link_directory(&src, &dest, src_repo, src.len);
|
||||
strbuf_release(&src);
|
||||
strbuf_release(&dest);
|
||||
|
Reference in New Issue
Block a user