From: "Pablo Sabater" <pabloosabaterr@gmail.com>
To: "Junio C Hamano" <gitster@pobox.com>,
"Pablo Sabater" <pabloosabaterr@gmail.com>
Cc: <git@vger.kernel.org>, <chandrapratap3519@gmail.com>,
<karthik.188@gmail.com>, <peff@peff.net>
Subject: Re: [PATCH GSoC v3 4/8] fetch-object-info: use dedicated struct for the results
Date: Mon, 03 Aug 2026 23:46:17 +0200 [thread overview]
Message-ID: <DKFMZO5TH1MW.1JD6RQLUJDK3M@gmail.com> (raw)
In-Reply-To: <xmqqwlu7xdmb.fsf@gitster.g>
On Mon Aug 3, 2026 at 8:28 PM CEST, Junio C Hamano wrote:
> Pablo Sabater <pabloosabaterr@gmail.com> writes:
>
>> 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.
>>
>> free_object_info_contents() loses its only caller and is dropped.
>>
>> 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>
>> ---
>> builtin/cat-file.c | 59 +++++++++--------------------------
>> fetch-object-info.c | 90 ++++++++++++++++++++++++++++-------------------------
>> fetch-object-info.h | 28 ++++++++++++-----
>> object-file.c | 10 ------
>> odb.h | 3 --
>> transport.c | 3 +-
>> transport.h | 5 +--
>> 7 files changed, 88 insertions(+), 110 deletions(-)
>
> The direction this step wants to take us looks good, but at this
> point we only support "size" and the client side starts parsing
> "type" only in [6/8], while the server side starts advertising
> "type" only in [7/8]. If the software at this step talks to a newer
> server that does support "type", it will hit BUG() if the user
> requests %(objecttype), no? IOW, introduction of "ask_type" smells
> a bit premature.
True, if a client asks type and size in this patch and the server
supports it, "wanted" will be 2 and because in the loop over wanted we
only expect size, we will end up BUG()'ing out for something that is
not a BUG(), but an old client vs a newer server.
I will move ask_type int a later patch in this series where it fits
correctly.
Thanks for noticing it,
Pablo
next prev parent reply other threads:[~2026-08-03 21:46 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-25 11:55 [PATCH GSoC 0/5] cat-file: extend remote-object-info to support %(objecttype) Pablo Sabater
2026-07-25 11:55 ` [PATCH GSoC 1/5] protocol-caps: add type support to object-info Pablo Sabater
2026-07-29 9:53 ` Chandra Pratap
2026-07-29 11:18 ` Pablo Sabater
2026-07-29 15:40 ` Junio C Hamano
2026-07-29 22:39 ` Karthik Nayak
2026-07-25 11:55 ` [PATCH GSoC 2/5] fetch-object-info: parse type from server response Pablo Sabater
2026-07-29 9:57 ` Chandra Pratap
2026-07-29 12:05 ` Pablo Sabater
2026-07-29 17:06 ` Chandra Pratap
2026-07-29 22:47 ` Karthik Nayak
2026-07-29 22:53 ` Karthik Nayak
2026-07-25 11:55 ` [PATCH GSoC 3/5] fetch-object-info: request all supported options dynamically Pablo Sabater
2026-07-29 9:57 ` Chandra Pratap
2026-07-29 12:07 ` Pablo Sabater
2026-07-25 11:55 ` [PATCH GSoC 4/5] serve: advertise type capability Pablo Sabater
2026-07-29 9:58 ` Chandra Pratap
2026-07-29 12:15 ` Pablo Sabater
2026-07-25 11:55 ` [PATCH GSoC 5/5] cat-file: unify default format Pablo Sabater
2026-07-29 9:59 ` Chandra Pratap
2026-07-29 12:23 ` Pablo Sabater
2026-07-29 9:52 ` [PATCH GSoC 0/5] cat-file: extend remote-object-info to support %(objecttype) Chandra Pratap
2026-07-29 12:34 ` Pablo Sabater
2026-07-31 19:49 ` [PATCH GSoC v2 0/6] " Pablo Sabater
2026-07-31 19:49 ` [PATCH GSoC v2 1/6] fetch-object-info: request all supported options dynamically Pablo Sabater
2026-07-31 23:16 ` Junio C Hamano
2026-07-31 19:49 ` [PATCH GSoC v2 2/6] t5701: use the test_file_size() helper Pablo Sabater
2026-08-01 4:27 ` Junio C Hamano
2026-08-01 20:49 ` Pablo Sabater
2026-07-31 19:49 ` [PATCH GSoC v2 3/6] protocol-caps: add type support to object-info Pablo Sabater
2026-08-01 4:55 ` Junio C Hamano
2026-07-31 19:49 ` [PATCH GSoC v2 4/6] fetch-object-info: parse type from server response Pablo Sabater
2026-08-01 5:04 ` Junio C Hamano
2026-08-01 13:38 ` Junio C Hamano
2026-08-01 22:20 ` Pablo Sabater
2026-08-01 23:14 ` Jeff King
2026-08-01 23:29 ` Jeff King
2026-08-02 2:02 ` Junio C Hamano
2026-08-02 12:33 ` Pablo Sabater
2026-08-02 15:43 ` Jeff King
2026-08-02 16:35 ` Junio C Hamano
2026-08-02 16:24 ` Junio C Hamano
2026-08-02 16:38 ` Jeff King
2026-08-02 22:24 ` Junio C Hamano
2026-08-01 21:28 ` Pablo Sabater
2026-07-31 19:49 ` [PATCH GSoC v2 5/6] serve: advertise type capability Pablo Sabater
2026-08-01 12:12 ` Chandra Pratap
2026-08-01 21:30 ` Pablo Sabater
2026-07-31 19:49 ` [PATCH GSoC v2 6/6] cat-file: unify default format Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 0/8] cat-file: extend remote-object-info to support %(objecttype) Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 1/8] t5701: use test_file_size() to get the size of a file Pablo Sabater
2026-08-03 17:21 ` Junio C Hamano
2026-08-03 21:12 ` Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 2/8] fetch-object-info: detect truncated server responses Pablo Sabater
2026-08-03 18:18 ` Junio C Hamano
2026-08-03 21:30 ` Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 3/8] fetch-object-info: pass arguments directly instead of a struct Pablo Sabater
2026-08-03 18:23 ` Junio C Hamano
2026-08-03 14:39 ` [PATCH GSoC v3 4/8] fetch-object-info: use dedicated struct for the results Pablo Sabater
2026-08-03 18:28 ` Junio C Hamano
2026-08-03 21:46 ` Pablo Sabater [this message]
2026-08-03 14:39 ` [PATCH GSoC v3 5/8] protocol-caps: add type support to object-info Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 6/8] fetch-object-info: parse type from server response Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 7/8] serve: advertise type capability Pablo Sabater
2026-08-03 14:39 ` [PATCH GSoC v3 8/8] cat-file: unify default format Pablo Sabater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DKFMZO5TH1MW.1JD6RQLUJDK3M@gmail.com \
--to=pabloosabaterr@gmail.com \
--cc=chandrapratap3519@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=karthik.188@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox