From: Justin Tobler <jltobler@gmail.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org, Karthik Nayak <karthik.188@gmail.com>,
Jeff King <peff@peff.net>
Subject: Re: [PATCH v2 7/8] refs: fix recursing `get_main_ref_store()` with "onbranch" config
Date: Wed, 17 Jun 2026 13:41:40 -0500 [thread overview]
Message-ID: <ajLoiCS2mXP49eAJ@denethor> (raw)
In-Reply-To: <20260615-b4-pks-refs-avoid-chdir-notify-reparent-v2-7-f4854aa99859@pks.im>
On 26/06/15 03:56PM, Patrick Steinhardt wrote:
[snip]
> diff --git a/refs.c b/refs.c
> index d3caa9a633..e69b9b8ac8 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -2351,15 +2351,31 @@ void ref_store_release(struct ref_store *ref_store)
>
> struct ref_store *get_main_ref_store(struct repository *r)
> {
> + enum ref_storage_format format;
> +
> if (r->refs_private)
> return r->refs_private;
>
> if (!r->gitdir)
> BUG("attempting to get main_ref_store outside of repository");
>
> - r->refs_private = ref_store_init(r, r->ref_storage_format,
> - r->gitdir, REF_STORE_ALL_CAPS);
> + /*
> + * When constructing the reference backend we'll end up reading the Git
> + * configuration. This means we'll also try to evaluate "onbranch"
> + * conditions.
> + *
> + * We cannot read branches when constructing the refdb, so it is not
> + * possible to evaluate those conditions in the first place. To gate
> + * their evaluation we check whether or not the reference storage
> + * format has been configured -- we thus have to temporarily set it to
> + * UNKNOWN here so that we don't end up recursing.
> + */
> + format = r->ref_storage_format;
> + r->ref_storage_format = REF_STORAGE_FORMAT_UNKNOWN;
Is this really the best signal to indicate that a repository ref store
has not been initialized? Temporarily setting the storage format to
REF_STORAGE_FORMAT_UNKNOWN feels rather awkward and suggests to me that
`include_by_branch()` probably shouldn't be using it to begin with if
its not reliable.
-Justin
next prev parent reply other threads:[~2026-06-17 18:41 UTC|newest]
Thread overview: 105+ 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 [this message]
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
2026-06-21 21:12 ` Jeff King
2026-06-22 5:15 ` Patrick Steinhardt
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
2026-06-22 8:28 ` [PATCH v5 00/11] refs: fix "onbranch" conditions Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 01/11] setup: inline `check_and_apply_repository_format()` Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 02/11] setup: stop applying repository format twice Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 03/11] setup: don't apply "GIT_REFERENCE_BACKEND" without a repository Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 04/11] refs: unregister reference stores from "chdir_notify" Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 05/11] chdir-notify: drop unused `chdir_notify_reparent()` Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 06/11] repository: free main reference database Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 07/11] refs: move parsing of "core.logAllRefUpdates" back into ref stores Patrick Steinhardt
2026-06-24 21:22 ` Justin Tobler
2026-06-25 6:35 ` Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 08/11] refs/files: lazy-load configuration to fix chicken-and-egg Patrick Steinhardt
2026-06-24 21:36 ` Justin Tobler
2026-06-25 6:35 ` Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 09/11] reftable: split up write options Patrick Steinhardt
2026-06-24 22:06 ` Justin Tobler
2026-06-25 6:35 ` Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 10/11] refs/reftable: lazy-load configuration to fix chicken-and-egg Patrick Steinhardt
2026-06-24 22:18 ` Justin Tobler
2026-06-25 6:36 ` Patrick Steinhardt
2026-06-22 8:28 ` [PATCH v5 11/11] refs: protect against chicken-and-egg recursion Patrick Steinhardt
2026-06-25 9:19 ` [PATCH v6 00/11] refs: fix "onbranch" conditions Patrick Steinhardt
2026-06-25 9:19 ` [PATCH v6 01/11] setup: inline `check_and_apply_repository_format()` Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 02/11] setup: stop applying repository format twice Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 03/11] setup: don't apply "GIT_REFERENCE_BACKEND" without a repository Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 04/11] refs: unregister reference stores from "chdir_notify" Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 05/11] chdir-notify: drop unused `chdir_notify_reparent()` Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 06/11] repository: free main reference database Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 07/11] refs: move parsing of "core.logAllRefUpdates" back into ref stores Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 08/11] refs/files: lazy-load configuration to fix chicken-and-egg Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 09/11] reftable: split up write options Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 10/11] refs/reftable: lazy-load configuration to fix chicken-and-egg Patrick Steinhardt
2026-06-25 9:20 ` [PATCH v6 11/11] refs: protect against chicken-and-egg recursion Patrick Steinhardt
2026-06-25 15:06 ` [PATCH v6 00/11] refs: fix "onbranch" conditions Justin Tobler
2026-06-25 20:50 ` Junio C Hamano
2026-06-26 15:20 ` Junio C Hamano
2026-06-26 19:43 ` Patrick Steinhardt
2026-06-26 5:06 ` Jeff King
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=ajLoiCS2mXP49eAJ@denethor \
--to=jltobler@gmail.com \
--cc=git@vger.kernel.org \
--cc=karthik.188@gmail.com \
--cc=peff@peff.net \
--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 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.