[PATCH GSoC v2 1/6] fetch-object-info: request all supported options dynamically
Pablo Sabater <[email protected]> Fri, 31 Jul 2026 21:49:34 +0200
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
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 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