From: Justin Tobler <jltobler@gmail.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org, Karthik Nayak <karthik.188@gmail.com>
Subject: Re: [PATCH v2 07/17] odb/source-packed: wire up `reprepare()` callback
Date: Tue, 16 Jun 2026 16:53:38 -0500 [thread overview]
Message-ID: <ajHDm_pG3Ckca4mp@denethor> (raw)
In-Reply-To: <20260609-pks-odb-source-packed-v2-7-839089132c8b@pks.im>
On 26/06/09 10:51AM, Patrick Steinhardt wrote:
> Move the logic to prepare and reprepare the "packed" source into
> "odb/source-packed.c" and wire it up as the `reprepare()` callback.
>
> Note that "preparing" a source is not yet generic. Eventually, it would
> probably make sense to turn the existing `reprepare()` callback into a
> `prepare()` callback with an optional flag to force re-preparing. But
> this step will be handled in a separate patch series.
I do find the prepare vs reprepare semantics a bit confusing. The
mentioned change above would be nice to see in the future. :)
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
[snip]
> static void odb_source_packed_reparent(const char *name UNUSED,
> const char *old_cwd,
> const char *new_cwd,
> @@ -58,6 +214,7 @@ struct odb_source_packed *odb_source_packed_new(struct odb_source_files *parent)
>
> packed->base.free = odb_source_packed_free;
> packed->base.close = odb_source_packed_close;
> + packed->base.reprepare = odb_source_packed_reprepare;
We moved `packfile_store_reprepare()` logic into "odb/source-packed.c"
and setup the callback making it accessible via `odb_source_reprepare()`
instead. Makes sense.
> if (!is_absolute_path(parent->base.path))
> chdir_notify_register(NULL, odb_source_packed_reparent, packed);
> diff --git a/odb/source-packed.h b/odb/source-packed.h
> index 68e64cabab..9d4796261a 100644
> --- a/odb/source-packed.h
> +++ b/odb/source-packed.h
> @@ -81,4 +81,13 @@ static inline struct odb_source_packed *odb_source_packed_downcast(struct odb_so
> return container_of(source, struct odb_source_packed, base);
> }
>
> +/*
> + * Prepare the source by loading packfiles and multi-pack indices for
> + * all alternates. This becomes a no-op if the source is already prepared.
> + *
> + * It shouldn't typically be necessary to call this function directly, as
> + * functions that access the source know to prepare it.
> + */
> +void odb_source_packed_prepare(struct odb_source_packed *source);
The logic for `packfile_store_prepare()` is also moved into
"odb/source-packed.c" and made accessible this function since there
isn't a matching callback.
The other changes are mostly 1:1 moves of associated logic and callsite
updates. Looks good.
-Justin
next prev parent reply other threads:[~2026-06-16 21:53 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-04 11:25 [PATCH 00/16] odb: make packed object source a proper `struct odb_source` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 01/16] packfile: rename `struct packfile_store` to `odb_source_packed` Patrick Steinhardt
2026-06-05 14:25 ` Karthik Nayak
2026-06-08 6:23 ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 02/16] packfile: move packed source into "odb/" subsystem Patrick Steinhardt
2026-06-08 15:09 ` Karthik Nayak
2026-06-09 7:27 ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 03/16] odb/source-packed: store pointer to "files" instead of generic source Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 04/16] odb/source-packed: start converting to a proper `struct odb_source` Patrick Steinhardt
2026-06-08 15:29 ` Karthik Nayak
2026-06-09 7:27 ` Patrick Steinhardt
2026-06-09 10:47 ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 05/16] odb/source-packed: wire up `close()` callback Patrick Steinhardt
2026-06-08 15:31 ` Karthik Nayak
2026-06-04 11:25 ` [PATCH 06/16] odb/source-packed: wire up `reprepare()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 07/16] packfile: use higher-level interface to implement `has_object_pack()` Patrick Steinhardt
2026-06-08 16:07 ` Karthik Nayak
2026-06-04 11:25 ` [PATCH 08/16] odb/source-packed: wire up `read_object_info()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 09/16] odb/source-packed: wire up `read_object_stream()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 10/16] odb/source-packed: wire up `for_each_object()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 11/16] odb/source-packed: wire up `count_objects()` callback Patrick Steinhardt
2026-06-08 16:12 ` Karthik Nayak
2026-06-09 7:27 ` Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 12/16] odb/source-packed: wire up `find_abbrev_len()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 13/16] odb/source-packed: wire up `freshen_object()` callback Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 14/16] odb/source-packed: stub out remaining functions Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 15/16] midx: refactor interfaces to work on "packed" source Patrick Steinhardt
2026-06-04 11:25 ` [PATCH 16/16] odb/source-packed: drop pointer to "files" parent source Patrick Steinhardt
2026-06-08 16:15 ` [PATCH 00/16] odb: make packed object source a proper `struct odb_source` Karthik Nayak
2026-06-09 7:27 ` Patrick Steinhardt
2026-06-09 8:50 ` [PATCH v2 00/17] " Patrick Steinhardt
2026-06-09 8:50 ` [PATCH v2 01/17] packfile: rename `struct packfile_store` to `odb_source_packed` Patrick Steinhardt
2026-06-16 21:01 ` Justin Tobler
2026-06-09 8:50 ` [PATCH v2 02/17] packfile: split out packfile list logic Patrick Steinhardt
2026-06-09 8:50 ` [PATCH v2 03/17] packfile: move packed source into "odb/" subsystem Patrick Steinhardt
2026-06-09 8:50 ` [PATCH v2 04/17] odb/source-packed: store pointer to "files" instead of generic source Patrick Steinhardt
2026-06-16 21:14 ` Justin Tobler
2026-06-16 21:28 ` Justin Tobler
2026-06-09 8:50 ` [PATCH v2 05/17] odb/source-packed: start converting to a proper `struct odb_source` Patrick Steinhardt
2026-06-16 21:36 ` Justin Tobler
2026-06-09 8:50 ` [PATCH v2 06/17] odb/source-packed: wire up `close()` callback Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 07/17] odb/source-packed: wire up `reprepare()` callback Patrick Steinhardt
2026-06-16 21:53 ` Justin Tobler [this message]
2026-06-09 8:51 ` [PATCH v2 08/17] packfile: use higher-level interface to implement `has_object_pack()` Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 09/17] odb/source-packed: wire up `read_object_info()` callback Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 10/17] odb/source-packed: wire up `read_object_stream()` callback Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 11/17] odb/source-packed: wire up `for_each_object()` callback Patrick Steinhardt
2026-06-16 22:10 ` Justin Tobler
2026-06-09 8:51 ` [PATCH v2 12/17] odb/source-packed: wire up `count_objects()` callback Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 13/17] odb/source-packed: wire up `find_abbrev_len()` callback Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 14/17] odb/source-packed: wire up `freshen_object()` callback Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 15/17] odb/source-packed: stub out remaining functions Patrick Steinhardt
2026-06-09 8:51 ` [PATCH v2 16/17] midx: refactor interfaces to work on "packed" source Patrick Steinhardt
2026-06-16 22:37 ` Justin Tobler
2026-06-09 8:51 ` [PATCH v2 17/17] odb/source-packed: drop pointer to "files" parent source Patrick Steinhardt
2026-06-16 22:51 ` Justin Tobler
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=ajHDm_pG3Ckca4mp@denethor \
--to=jltobler@gmail.com \
--cc=git@vger.kernel.org \
--cc=karthik.188@gmail.com \
--cc=ps@pks.im \
/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