From: Pablo Sabater Date: Fri, 31 Jul 2026 19:49:34 +0000 (+0200) Subject: fetch-object-info: request all supported options dynamically X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c60474b5461eff10725a8ffd76242a69cac9098d;p=thirdparty%2Fgit.git fetch-object-info: request all supported options dynamically 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 Mentored-by: Chandra Pratap Signed-off-by: Pablo Sabater Signed-off-by: Junio C Hamano --- 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++)