Files
git/builtin
Pablo Sabater 1d3d7f19ac fetch-object-info: use dedicated struct for the results
fetch_object_info() collects information about N objects, but it stores
the results in an array of object_info. That struct holds the extended
parameters of read_object_info() (The optional outputs the caller wants
filled). Its pointers tell that function where to write the answers for
a single object. object_info is not meant to be the final storage, and
since fetch_object_info() does not call read_object_info(), there is no
reason to use it. Using it means allocating one scalar per object per
attribute just to have those pointers somewhere to point at.

Add struct fetch_object_info_results. The caller sets the wants_* flags
to say what it is interested in, and fetch_object_info() allocates one
array per attribute. A set wants_* flag means "asked for", while a
non-NULL array means "available". The caller releases the arrays with
free_fetch_object_info_results().

The object_info_options string list is no longer needed. Filtering
against the server's advertisement now sets local ask_* flags, and
send_object_info_request() turns those into the v2 protocol option
strings. remote_atom_map[] existed only to map those strings back into
atom names, so drop it and build remote_allowed_atoms from the result
arrays.

Currently for wants_* and ask_* there is only the 'size' variant but a
subsequent commit will add '*_type'.

free_object_info_contents() loses its only caller and is dropped.

Dropping the allow-list check makes the final else reachable from the
wire, so die() instead of BUG(): an unknown attribute is the server's
error, not ours.

Helped-by: Jeff King <peff@peff.net>
Helped-by: Junio C Hamano <gitster@pobox.com>
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>
2026-08-04 13:35:37 -07:00
..
2026-04-10 07:58:53 -07:00
2026-07-07 10:49:41 -07:00
2026-07-19 10:42:19 -07:00
2026-07-06 15:50:19 -07:00
2026-07-15 13:24:19 -07:00
2026-07-07 10:49:41 -07:00
2026-07-13 08:27:27 -07:00
2026-05-27 14:15:44 +09:00
2026-07-19 10:42:19 -07:00
2026-07-06 07:45:57 -07:00
2026-03-31 20:43:14 -07:00
2026-07-06 15:50:21 -07:00
2026-07-07 10:49:40 -07:00
2026-07-07 10:49:40 -07:00
2026-07-07 17:48:57 -07:00
2026-03-31 20:43:14 -07:00
2026-05-06 09:48:28 +09:00