Re: [PATCH GSoC 3/5] fetch-object-info: request all supported options dynamically

"Pablo Sabater" <[email protected]> Wed, 29 Jul 2026 14:07:56 +0200
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
On Wed Jul 29, 2026 at 11:57 AM CEST, Chandra Pratap wrote:
> On Sat, 25 Jul 2026 at 17:25, Pablo Sabater <[email protected]> wrote:
>>
>> In send_object_info_request(), size is hardcoded to be the only option
>> sent. In order to support type and future capabilities, replace the
>> hardcoded size with a loop that requests everything on
>> object_info_options list.
>>
>> This is safe because the list has already been trimmed previously in
>> fetch_object_info() to only contain options that the server supports.
>>
>> Mentored-by: Karthik Nayak <[email protected]>
>> Mentored-by: Chandra Pratap <[email protected]>
>> Signed-off-by: Pablo Sabater <[email protected]>
>> ---
>>  fetch-object-info.c | 11 +++++++----
>>  1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/fetch-object-info.c b/fetch-object-info.c
>> index cf6b94afb8..e5cfdafe68 100644
>> --- a/fetch-object-info.c
>> +++ b/fetch-object-info.c
>> @@ -15,10 +15,13 @@ static void send_object_info_request(const int fd_out, struct object_info_args *
>>
>>         write_command_and_capabilities(&req_buf, "object-info", args->server_options);
>>
>> -       if (unsorted_string_list_has_string(args->object_info_options, "size"))
>> -               packet_buf_write(&req_buf, "size");
>> -       else if (args->object_info_options->nr)
>> -               BUG("only size should be in object_info_options");
>> +       /*
>> +        * The list is already checked to only request valid and supported fields
>> +        * no need to check, just request everything left on the list
>
> Nit: ...valid and supported fields no need to check.. -> valid and
> supported fields.
> Just request everything remaining on the list.

Ok, will fix it, thanks.

>
>> +        */
>> +       for (size_t i = 0; i < args->object_info_options->nr; i++)
>> +               packet_buf_write(&req_buf, "%s",
>> +                                args->object_info_options->items[i].string);
>
> Perfect place to use `for_each_string_list_item()`.

Didn't think of that, I will change it, thanks.

>
>
>>         if (args->oids)
>>                 for (size_t i = 0; i < args->oids->nr; i++)
>>
>> --
>> 2.54.0
>>