Thread (35 messages) flat view 35 messages, 4 authors, 1h ago

Re: [PATCH 01/12] cache-tree: remove dependency on `the_repository`

From: Patrick Steinhardt <hidden>
Date: 2026-09-02 10:23:39

On Tue, Sep 01, 2026 at 03:03:44PM -0700, Junio C Hamano wrote:
Patrick Steinhardt [off-list ref] writes:
quoted
The "cache-tree" subsystem still depends on `the_repository`. Adapt it
to instead use repositories provided via the context, either as a new
parameter or the one passed in via `struct index_state`.

Besides getting rid of `the_repository`, this also removes the last
dependency on registering submodule sources with the main object
database. When reading gitmodules from a submodule's index we implicitly
read that object via `the_repository`'s object database, which is of
course wrong. This works though because we would then register the
submodule's object database with the main object database, but a later
patch is going to get rid of that mechanism.
As "the_repository, " is quite a long string, many lines bust our
usual ~70 column limit, but other than that the changes look quite
straight-forward.

We probably should make the cache_tree_fully_valid() into file scope
static.  Your new cache_tree_fully_valid() that takes the repository
and a cache_tree, which will be file-scope static, will gain a new
thin wrapper around it, i.e.,

    int has_valid_cache_tree(struct index_state *istate)
    {
	return cache_tree_fully_valid(istate->repo, istate->cache_tree);
    }

Migrate the callers outside cache_tree.c file to use it; outside the
implementation, nobody has any business talking about a subdirectory
of any cache-tree, or any cache-tree outside the context of the istate
it belongs to.
Yeah, I think that's a good idea indeed. But instead of introducing a
new `has_valid_cache_tree()`, I think it makes more sense to just adapt
the current function and introduce `cache_tree_fully_valid_recursive()`
as internal function instead. That also matches the other existing
interfaces like `cache_tree_fully_valid()` better.

Thanks!

Patrick
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help