On Mon, Dec 11, 2017 at 7:18 PM, Brandon Williams <bmwill@xxxxxxxxxx> wrote: > On 12/11, Eric Sunshine wrote: >> struct strbuf alt = STRBUF_INIT; >> - strbuf_addf(&alt, "%s/objects", src_repo); >> + get_common_dir(&alt, src_repo); >> + strbuf_addstr(&alt, "/objects"); > > If you wanted to do this in one function call you could either use > 'strbuf_git_common_path()' or either 'strbuf_git_path()' or > 'strbuf_repo_git_path()' which will do the proper path adjustments when > working on a path which should be shared between worktrees (i.e. part of > the common git dir). Thanks for the pointers, however, the above fix mirrors the fix made by 744e469755 (clone: allow --local from a linked checkout, 2015-09-28) to code immediately below it in the 'else' arm: get_common_dir(&src, src_repo); get_common_dir(&dest, dest_repo); strbuf_addstr(&src, "/objects"); strbuf_addstr(&dest, "/objects"); It would be poor form and confusing to use one of the mechanisms you suggest while leaving the 'else' arm untouched. Re-working both arms of the 'if' to use one of the suggested functions would make a fine follow-on or preparatory patch, however, I'd rather not hold up this fix merely to re-roll for such a minor cleanup. (I also considered a follow-on patch to reduce the duplication between the two cases but decided against it, for the present, since such a patch would almost be noise without much gain.) By the way, is there any documentation explaining the differences between all these similar functions and when one should be used over the others?