clone: allow --local from a linked checkout

Noticed-by: Bjørnar Snoksrud <snoksrud@gmail.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Sep 28, 2015 at 20:06 UTC 744e4697555d4982acf0862f8fa6b15dd4796c37
2 files changed +9 -2
builtin/clone.c
+4 -2
@@ -424,8 +424,10 @@ static void clone_local(const char *src_repo, const char *dest_repo)
424 } else {
425 struct strbuf src = STRBUF_INIT;
426 struct strbuf dest = STRBUF_INIT;
427 - strbuf_addf(&src, "%s/objects", src_repo);
428 - strbuf_addf(&dest, "%s/objects", dest_repo);
427 + get_common_dir(&src, src_repo);
428 + get_common_dir(&dest, dest_repo);
429 + strbuf_addstr(&src, "/objects");
430 + strbuf_addstr(&dest, "/objects");
431 copy_or_link_directory(&src, &dest, src_repo, src.len);
432 strbuf_release(&src);
433 strbuf_release(&dest);
t/t2025-worktree-add.sh
+5
@@ -193,4 +193,9 @@ test_expect_success '"add" -B/--detach mutually exclusive' '
193 test_must_fail git worktree add -B poodle --detach bamboo master
194 '
195
196 +test_expect_success 'local clone from linked checkout' '
197 + git clone --local here here-clone &&
198 + ( cd here-clone && git fsck )
199 +'
200 +
201 test_done