From: Chandra Pratap Date: Sun, 12 Jul 2026 05:26:59 GMT Subject: Re: [PATCH GSoC v16 00/13] cat-file: add remote-object-info to batch-command Message-ID: In-Reply-To: <20260710-ps-eric-work-rebase-v16-0-66e07b58a8fe@gmail.com> On Fri, 10 Jul 2026 at 22:11, Pablo Sabater wrote: > > This patch series is a continuation of Eric Ju's > (eric.peijian@gmail.com) and Calvin Wan's (calvinwan@google.com) patch > series [1] and [2] respectively. > > Sometimes it is beneficial to retrieve information about an object > without having to download it completely. The server logic for > retrieving size has already been implemented and merged in a2ba162cda > (object-info: support for retrieving object info, 2021-04-20) [3]. > This patch series implement the client option for it. > > Eric's series adds the remote-object-info command to cat-file > --batch-command. This command allows the client to make an object-info > command request to a server that supports protocol v2. > > If the server uses protocol v2 but does not support the object-info > capability, cat-file --batch-command will die. > > If a user attempts to use remote-object-info with protocol v1, cat-file > --batch-command will die. > > Currently, only the size (%(objectsize)) is supported end to end in this > implementation. The type (%(objecttype)) is known by the client's > allow-list and request path but is not supported on the server side > nor the response parsing. A follow up series will add full end-to-end > support for %(objecttype). > > The default format for remote-object-info is set to "%(objectname) > %(objectsize)". Once %(objecttype) is supported, the default format will > be unified accordingly. > > If the batch command format includes unsupported fields such as > %(objecttype), %(objectsize:disk), or %(deltabase), the command will > return empty strings for each unsupported field. > > This series completes Eric's work mainly with the refactor of the > validation of the placeholder with an allow-list that filters what the > client asks with what the server is capable of provide following Jeff > King's idea [4]. > > GitHub CI: https://github.com/pabloosabaterr/git/actions/runs/29091116939 > > [1]: https://lore.kernel.org/git/20250221190451.12536-1-eric.peijian@gmail.com/ > [2]: https://lore.kernel.org/git/20220728230210.2952731-1-calvinwan@google.com/#t > [3]: https://git.kernel.org/pub/scm/git/git.git/commit/?id=a2ba162cda2acc171c3e36acbbc854792b093cb7 > [4]: https://lore.kernel.org/git/20250313060250.GH94015@coredump.intra.peff.net/ > > Changes since v15: > - Completely dropped the static advertise_sid variable at fetch-pack.c > - Split the hash_algo type change into its own commit. > - Removed strtoumax_szt() from git-compat-util.h (and its commit) into a > static parse_object_size() helper. > - Removed backquotes from commit message bodies and fixed typos. > > Signed-off-by: Pablo Sabater > --- > Calvin Wan (3): > fetch-pack: move fetch initialization > serve: advertise object-info feature > transport: add client support for object-info > > Eric Ju (3): > cat-file: declare loop counter inside for() > t1006: split test utility functions into new 'lib-cat-file.sh' > cat-file: add remote-object-info to batch-command > > Pablo Sabater (7): > transport-helper: fix memory leak of helper on disconnect > fetch-pack: fix hash_algo variable type > fetch-pack: drop static advertise_sid variable > fetch-pack: move write_fetch_command_and_capabilities() to connect.c > connect: make write_fetch_command_and_capabilities() more generic > cat-file: validate remote atoms with an allow-list > cat-file: make remote-object-info allow-list dynamic > > Documentation/git-cat-file.adoc | 29 +- > Documentation/gitprotocol-v2.adoc | 11 +- > Makefile | 1 + > builtin/cat-file.c | 221 ++++++++++- > connect.c | 34 ++ > connect.h | 8 + > fetch-object-info.c | 129 ++++++ > fetch-object-info.h | 22 ++ > fetch-pack.c | 58 +-- > fetch-pack.h | 1 + > meson.build | 1 + > object-file.c | 10 + > odb.h | 3 + > serve.c | 5 +- > t/lib-cat-file.sh | 16 + > t/meson.build | 1 + > t/t1006-cat-file.sh | 13 +- > t/t1017-cat-file-remote-object-info.sh | 699 +++++++++++++++++++++++++++++++++ > transport-helper.c | 15 +- > transport-internal.h | 8 + > transport.c | 46 +++ > transport.h | 10 + > 22 files changed, 1255 insertions(+), 86 deletions(-) > > base-commit: f60db8d575adb79761d363e026fb49bddf330c73 This version looks fine to me. Thanks, Chandra.