From b3b05971c1e51bb991c768fb8cead2c0501fa93e Mon Sep 17 00:00:00 2001 From: Eric Sunshine Date: Mon, 11 Dec 2017 18:16:12 -0500 Subject: clone: support 'clone --shared' from a worktree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When worktree functionality was originally implemented, the possibility of 'clone --local' from within a worktree was overlooked, with the result that the location of the "objects" directory of the source repository was computed incorrectly, thus the objects could not be copied or hard-linked by the clone. This shortcoming was addressed by 744e469755 (clone: allow --local from a linked checkout, 2015-09-28). However, the related case of 'clone --shared' (despite being handled only a few lines away from the 'clone --local' case) was not fixed by 744e469755, with a similar result of the "objects" directory location being incorrectly computed for insertion into the 'alternates' file. Fix this. Reported-by: Marc-André Lureau Signed-off-by: Eric Sunshine Signed-off-by: Junio C Hamano --- builtin/clone.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'builtin/clone.c') diff --git a/builtin/clone.c b/builtin/clone.c index 3e14491a34..69eabc0d88 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -423,7 +423,8 @@ static void clone_local(const char *src_repo, const char *dest_repo) { if (option_shared) { struct strbuf alt = STRBUF_INIT; - strbuf_addf(&alt, "%s/objects", src_repo); + get_common_dir(&alt, src_repo); + strbuf_addstr(&alt, "/objects"); add_to_alternates_file(alt.buf); strbuf_release(&alt); } else { -- cgit v1.2.1