Re: [PATCH 4/4] odb: drop `alternates_db` field

Patrick Steinhardt <[email protected]>
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
On Tue, Aug 11, 2026 at 05:31:17PM -0500, Justin Tobler wrote:
> On 26/08/10 03:33PM, Patrick Steinhardt wrote:
> > The `struct object_database::alternates_db` field tracks the value of
> > the "GIT_ALTERNATE_OBJECT_DIRECTORIES" environment variable and is
> > used in `odb_prepare_alternates()`. It's not necessary to store it as a
> > separate field anymore though, as we stopped lazy-loading alternates.
> > Consequently, we can simply pass it to `odb_prepare_alternates()` via
> > `odb_new()` now.
> > 
> > Do so and remove the field.
> > 
> > Signed-off-by: Patrick Steinhardt <[email protected]>
> > ---
> [snip]
> > @@ -1126,7 +1126,7 @@ void odb_prepare(struct object_database *o, enum odb_prepare_flags flags)
> >  	 * the lifetime of the process.
> >  	 */
> >  	if (flags & ODB_PREPARE_FLUSH_CACHES) {
> > -		odb_prepare_alternates(o);
> > +		odb_prepare_alternates(o, NULL);
> >  		o->object_count_valid = 0;
> >  	}
> 
> Naive question: is the reason we don't need to wire the
> `GIT_ALTERNATE_OBJECT_DIRECTORIES` environment variable here because
> they have already been added as sources? IOW, when we invoke
> `odb_prepare_alternates()` after the initial set up, we only really care
> about re-reading the alternates file.

Yes, exactly. We set up alternates exactly once in `odb_new()`, and we
don't expect the environment variable to ever change in a running
process. And as `odb_prepare_alternates()` only adds but never removes
any it's fine to ignore those here.

I'll add a comment.

Patrick
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.