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