Re: [PATCH GSoC 3/5] fetch-object-info: request all supported options dynamically
From: Chandra Pratap <hidden>
Date: 2026-07-29 09:58:02
On Sat, 25 Jul 2026 at 17:25, Pablo Sabater [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 [off-list ref] Mentored-by: Chandra Pratap [off-list ref] Signed-off-by: Pablo Sabater <redacted> --- 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.
+ */ + 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()`.
if (args->oids)
for (size_t i = 0; i < args->oids->nr; i++)
--
2.54.0