All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Karthik Nayak <karthik.188@gmail.com>
Subject: Re: [PATCH v2 7/8] refs: fix recursing `get_main_ref_store()` with "onbranch" config
Date: Fri, 19 Jun 2026 08:25:42 +0200	[thread overview]
Message-ID: <ajTggBKIzgSpp99X@pks.im> (raw)
In-Reply-To: <20260618164035.GA1218204@coredump.intra.peff.net>

On Thu, Jun 18, 2026 at 12:40:35PM -0400, Jeff King wrote:
> On Mon, Jun 15, 2026 at 03:56:53PM +0200, Patrick Steinhardt wrote:
[snip]
> I'd expect the ref database config (like the ref format) to be read not
> through the regular config subsystem, but via read_repository_format()
> and friends. And while that does build on the regular config code, it
> should never enable includes at all. So includeIf.onbranch:foo.path is
> just another uninteresting config key to it.

This feels rather painful though, as we'd now have to do this for every
single backend that we know about. Also, I think not enabling includes
is an overly broad fix: there isn't any reason why "includeif.gitdir"
and all the other conditions shouldn't apply. We really only want to
disable "onbranch".

[snip]
> > The consequence is that we have recursion:
> > 
> >   1. We call `get_main_ref_store()`.
> > 
> >   2. We don't yet have a reference store, so we call `ref_store_init()`.
> > 
> >   3. We parse the configuration required for the reference store.
> > 
> >   4. We eventually end up in `include_by_branch()`.
> > 
> >   5. We have already configured the reference storage format, so we end
> >      up calling `get_main_ref_store()` again.
> 
> Ah, the culprit seems to be ref_store_init() calling into the regular
> config parser via repo_settings_get_log_all_ref_updates(). But that
> feels weird to me. Either:
> 
>   1. It is application config that should not be something we need to
>      load in order to initialize the backend. We could lazy-load it
>      later, or rely on higher level code to set the option.

I actually tried lazy-loading, but I found it to be quite painful
overall, as the above setting isn't the only one we use. The reftable
backend for example has a bunch of additional settings that it reads.

We could of course start lazy-loading all of these. But that may not
work for future backends that really _need_ to parse some configuration
at initiation time.

>   2. It is crucial to the ref backend functioning, in which case we
>      ought to be reading it alongside core.repositoryFormatVersion, etc.

I think ideally, we'd have a way to read the repository configuration
that explicitly disables parsing includes. We could for example extend
`struct config_options` to have a new "ignore_refdb" toggle then
explicitly use that in the reference backends.

I'll give that a try.

Patrick

  reply	other threads:[~2026-06-19  6:25 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-10 14:57 [PATCH 0/9] refs: stop using `chdir_notify_reparent()` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 1/9] setup: inline `check_and_apply_repository_format()` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 2/9] setup: stop applying repository format twice Patrick Steinhardt
2026-06-12  9:00   ` Karthik Nayak
2026-06-15 12:36     ` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 3/9] setup: don't apply "GIT_REFERENCE_BACKEND" without a repository Patrick Steinhardt
2026-06-10 17:32   ` Junio C Hamano
2026-06-12  6:18     ` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 4/9] refs: unregister reference stores from "chdir_notify" Patrick Steinhardt
2026-06-12  9:18   ` Karthik Nayak
2026-06-15 12:36     ` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 5/9] chdir-notify: drop unused `chdir_notify_reparent()` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 6/9] repository: free main reference database Patrick Steinhardt
2026-06-12  9:20   ` Karthik Nayak
2026-06-10 14:57 ` [PATCH 7/9] refs: fix recursing `get_main_ref_store()` with "onbranch" config Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 8/9] refs: drop local buffer in `refs_compute_filesystem_location()` Patrick Steinhardt
2026-06-10 14:57 ` [PATCH 9/9] refs: always use absolute paths for reference stores Patrick Steinhardt
2026-06-12  9:58   ` Karthik Nayak
2026-06-15 12:36     ` Patrick Steinhardt
2026-06-11  6:53 ` [PATCH 0/9] refs: stop using `chdir_notify_reparent()` Jeff King
2026-06-12  6:18   ` Patrick Steinhardt
2026-06-13 14:00     ` Jeff King
2026-06-15 12:36       ` Patrick Steinhardt
2026-06-15 13:56 ` [PATCH v2 0/8] " Patrick Steinhardt
2026-06-15 13:56   ` [PATCH v2 1/8] setup: inline `check_and_apply_repository_format()` Patrick Steinhardt
2026-06-15 13:56   ` [PATCH v2 2/8] setup: stop applying repository format twice Patrick Steinhardt
2026-06-17 17:22     ` Justin Tobler
2026-06-15 13:56   ` [PATCH v2 3/8] setup: don't apply "GIT_REFERENCE_BACKEND" without a repository Patrick Steinhardt
2026-06-17 17:43     ` Justin Tobler
2026-06-18  6:53       ` Patrick Steinhardt
2026-06-15 13:56   ` [PATCH v2 4/8] refs: unregister reference stores from "chdir_notify" Patrick Steinhardt
2026-06-17 18:02     ` Justin Tobler
2026-06-17 18:07       ` Justin Tobler
2026-06-18  6:54       ` Patrick Steinhardt
2026-06-15 13:56   ` [PATCH v2 5/8] chdir-notify: drop unused `chdir_notify_reparent()` Patrick Steinhardt
2026-06-15 13:56   ` [PATCH v2 6/8] repository: free main reference database Patrick Steinhardt
2026-06-17 18:09     ` Justin Tobler
2026-06-15 13:56   ` [PATCH v2 7/8] refs: fix recursing `get_main_ref_store()` with "onbranch" config Patrick Steinhardt
2026-06-17 18:41     ` Justin Tobler
2026-06-18  5:59       ` Patrick Steinhardt
2026-06-18 14:15         ` Justin Tobler
2026-06-18 14:51           ` Patrick Steinhardt
2026-06-18 15:53             ` Justin Tobler
2026-06-18 16:40     ` Jeff King
2026-06-19  6:25       ` Patrick Steinhardt [this message]
2026-06-15 13:56   ` [PATCH v2 8/8] refs: drop local buffer in `refs_compute_filesystem_location()` Patrick Steinhardt
2026-06-18  6:54 ` [PATCH v3 0/8] refs: stop using `chdir_notify_reparent()` Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 1/8] setup: inline `check_and_apply_repository_format()` Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 2/8] setup: stop applying repository format twice Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 3/8] setup: don't apply "GIT_REFERENCE_BACKEND" without a repository Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 4/8] refs: unregister reference stores from "chdir_notify" Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 5/8] chdir-notify: drop unused `chdir_notify_reparent()` Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 6/8] repository: free main reference database Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 7/8] refs: fix recursing `get_main_ref_store()` with "onbranch" config Patrick Steinhardt
2026-06-18  6:54   ` [PATCH v3 8/8] refs: drop local buffer in `refs_compute_filesystem_location()` Patrick Steinhardt
2026-06-19 11:27 ` [PATCH v4 00/10] refs: stop using `chdir_notify_reparent()` Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 01/10] setup: inline `check_and_apply_repository_format()` Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 02/10] setup: stop applying repository format twice Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 03/10] setup: don't apply "GIT_REFERENCE_BACKEND" without a repository Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 04/10] refs: unregister reference stores from "chdir_notify" Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 05/10] chdir-notify: drop unused `chdir_notify_reparent()` Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 06/10] repository: free main reference database Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 07/10] refs: move parsing of "core.logAllRefUpdates" back into ref stores Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 08/10] refs/reftable-backend: manually parse "core.sharedRepository" Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 09/10] refs: fix recursing `get_main_ref_store()` with "onbranch" config Patrick Steinhardt
2026-06-19 11:27   ` [PATCH v4 10/10] refs: drop local buffer in `refs_compute_filesystem_location()` Patrick Steinhardt

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=ajTggBKIzgSpp99X@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.