Re: [PATCH v4 5/9] builtin/clone: move setup of alternates for shared local clones
Karthik Nayak <karthik.188@gmail.com> writes:
Show 49 quoted lines
> Patrick Steinhardt <ps@pks.im> writes:
>
>> When cloning a local repository with "--shared" we add that repository
>> to the new repository's alternates. This is done in `clone_local()`,
>> which is responsible for performing local clones.
>>
>> Move the logic into `collect_alternates()` to unify our setup of
>> alternates. Furthermore, this will allow us to set up alternates right
>> at creation time of the object database.
>>
>> Note that the logic for cloning a local repository with "--no-shared" is
>> not yet part of `collect_alternates()`. This will be handled in the next
>> commit.
>>
>> Signed-off-by: Patrick Steinhardt <ps@pks.im>
>> ---
>> builtin/clone.c | 23 ++++++++++++++---------
>> 1 file changed, 14 insertions(+), 9 deletions(-)
>>
>> diff --git a/builtin/clone.c b/builtin/clone.c
>> index 8786a49332..011fc867c8 100644
>> --- a/builtin/clone.c
>> +++ b/builtin/clone.c
>> @@ -220,7 +220,8 @@ static void copy_alternates(struct strbuf *src, const char *src_repo)
>> fclose(in);
>> }
>>
>> -static void collect_alternates(struct strvec *alternates)
>> +static void collect_alternates(struct strvec *alternates,
>> + const char *src_repo, bool is_local)
>> {
>> if (option_required_reference.nr || option_optional_reference.nr) {
>> struct add_one_alternate_data data = {
>> @@ -234,6 +235,16 @@ static void collect_alternates(struct strvec *alternates)
>> for_each_string_list(&option_optional_reference,
>> add_one_alternate, &data);
>> }
>> +
>> + if (is_local) {
>>
>
> Shouldn't we also check for `option_shared` here?
>
>> + struct strbuf commondir = STRBUF_INIT;
>> +
>> + get_common_dir(&commondir, src_repo);
>> + if (option_shared)
>> + strvec_pushf(alternates, "%s/objects", commondir.buf);
>> +So we do it here, but then commondir is initiated but unused otherwise.
>> + strbuf_release(&commondir);
>> + }
>> }
>>