[PATCH GSoC v2 1/6] fetch-object-info: request all supported options dynamically
- From
Pablo Sabater <pabloosabaterr@gmail.com>
- Date
- Jul 31, 2026, 19:49 UTC
- Message-ID
- <20260731-objecttype-support-v2-1-af577461ed57@gmail.com>
- In-Reply-To
- <20260731-objecttype-support-v2-0-af577461ed57@gmail.com>
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 <karthik.188@gmail.com> Mentored-by: Chandra Pratap <chandrapratap3519@gmail.com> Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com> --- 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 ba7e179c44..ec8a80b3be 100644 --- a/fetch-object-info.c +++ b/fetch-object-info.c @@ -12,13 +12,16 @@ static void send_object_info_request(const int fd_out, struct object_info_args *args) { struct strbuf req_buf = STRBUF_INIT; + struct string_list_item *item; 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 has already been checked to only contain valid and + * supported fields, so just request everything remaining on it. + */ + for_each_string_list_item(item, args->object_info_options) + packet_buf_write(&req_buf, "%s", item->string); if (args->oids) for (size_t i = 0; i < args->oids->nr; i++)
-- 2.54.0