fetch-object-info: parse type from server response

The server can handle type requests but does not advertise the
capability yet. Prepare the client to know how to parse the server
response once the server advertises the capability.

Mentored-by: Karthik Nayak <karthik.188@gmail.com>
Mentored-by: Chandra Pratap <chandrapratap3519@gmail.com>
Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
seen
Pablo Sabater 2026-07-25 13:55:03 +02:00 committed by Junio C Hamano
parent e45d1307f7
commit 39d1949e8e
1 changed files with 11 additions and 1 deletions

View File

@ -50,6 +50,7 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar
const int stateless_rpc, const int fd_out)
{
int size_index = -1;
int type_index = -1;

switch (version) {
case protocol_v2:
@ -101,8 +102,13 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar
for (size_t j = 0; j < args->oids->nr; j++)
object_info_data[j].sizep =
xcalloc(1, sizeof(*object_info_data[j].sizep));
} else if (!strcmp(reader->line, "type")) {
type_index = (int)i;
for (size_t j = 0; j < args->oids->nr; j++)
object_info_data[j].typep =
xcalloc(1, sizeof(*object_info_data[j].typep));
} else {
BUG("only size is supported");
BUG("unexpected object-info option: %s", reader->line);
}
}

@ -148,6 +154,10 @@ int fetch_object_info(const enum protocol_version version, struct object_info_ar
object_info_values.items[0].string,
object_info_values.items[size_index + 1].string);

if (type_index >= 0)
*object_info_data[i].typep =
type_from_string(object_info_values.items[type_index + 1].string);

string_list_clear(&object_info_values, 0);
}
check_stateless_delimiter(stateless_rpc, reader, "stateless delimiter expected");