From: Patrick Steinhardt <ps@pks.im>
To: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Cc: git@vger.kernel.org, Karthik Nayak <karthik.188@gmail.com>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v2 08/11] setup: refactor how we configure the ref storage format
Date: Wed, 9 Sep 2026 11:23:34 +0200 [thread overview]
Message-ID: <aqEllv3TicOLB7g0@pks.im> (raw)
In-Reply-To: <be1c7560-0da6-436e-8f46-073e95bcad07@gmail.com>
On Wed, Sep 09, 2026 at 01:30:55PM +0530, Kaartic Sivaraam wrote:
> On 9/7/26 16:48, Patrick Steinhardt wrote:
> > diff --git a/setup.c b/setup.c
> > index 3be7dac452..38fa5e854c 100644
> > --- a/setup.c
> > +++ b/setup.c
> > @@ -2761,40 +2761,65 @@ static void repository_format_configure(struct repository_format *repo_fmt,
> >
> > ... snip ...
> > -
> > - ref_backend_uri = getenv(GIT_REFERENCE_BACKEND_ENVIRONMENT);
> > - if (ref_backend_uri) {
> > - enum ref_storage_format format;
> > - char *payload;
> > -
> > - format = ref_storage_format_by_uri(ref_backend_uri, &payload);
> > - if (format == REF_STORAGE_FORMAT_UNKNOWN)
> > - die(_("unknown ref storage format: '%s'"), ref_backend_uri);
> > -
> > - repo_fmt->ref_storage_format = format;
> > - free(repo_fmt->ref_storage_payload);
> > - repo_fmt->ref_storage_payload = payload;
> > - }
> > + /*
> > + * If we have a preexisting repository we need to verify that its
> > + * current ref storage format does not change.
> > + */
> > + if (repo_fmt->version >= 0) {
> > + if (ref_storage_format != repo_fmt->ref_storage_format)
> > + die(_("attempt to reinitialize repository with different reference storage format"));
> > + if ((ref_storage_payload || repo_fmt->ref_storage_payload) &&
> > + strcmp(ref_storage_payload ? ref_storage_payload : "",
> > + repo_fmt->ref_storage_payload ? repo_fmt->ref_storage_payload : ""))
>
> Rather than a strcmp, wouldn't it be ideal to do the path comparison using
> strbuf_realpath to make sure we avoid similar paths like the following from
> failing during reinitialization?
>
> $ mkdir store
> $ git init --ref-storage-format="files://$PWD/store" r1
> Initialized empty Git repository in .../r1/.git/
> $ git init --ref-storage-format="files://$PWD/store" r1
> Reinitialized existing Git repository in .../r1/.git/
> $ git init --ref-storage-format="files://$PWD/./store" r1
> fatal: attempt to reinitialize repository with different reference storage
> payload
>
> This matches with how we actually make use of the path at runtime in the
> refs_compute_filesystem_location function in refs.c.
No, because that'd assume that the payload even is a path. But in
theory, it could be anything, like for example a database host to
connect to. In `refs_compute_filesystem_location()` it's a different
thing though as that call happens inside the backends themselves, and
they know what kind of payload to expect.
Patrick
next prev parent reply other threads:[~2026-09-09 9:23 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 10:36 [PATCH 00/11] Fix inconsistent ref storage format terminology Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 01/11] builtin/init: rename "--ref-format=" to "--ref-storage=" Patrick Steinhardt
2026-09-04 13:05 ` Karthik Nayak
2026-09-07 10:00 ` Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 02/11] builtin/clone: " Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 03/11] builtin/refs: " Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 04/11] builtin/submodule: " Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 05/11] builtin/rev-parse: rename "--show-ref-format" to "--show-ref-storage" Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 06/11] help: rename "default-ref-format" to "default-ref-storage" Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 07/11] refs: expose function to parse reference URIs Patrick Steinhardt
2026-09-04 13:12 ` Karthik Nayak
2026-09-04 10:36 ` [PATCH 08/11] setup: refactor how we configure the ref storage format Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 09/11] setup: rename ref storage format environment variables Patrick Steinhardt
2026-09-04 13:20 ` Karthik Nayak
2026-09-07 10:00 ` Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 10/11] setup: rename "init.defaultRefFormat" to "init.defaultRefStorage" Patrick Steinhardt
2026-09-04 10:36 ` [PATCH 11/11] setup: allow "git init --ref-storage=" to specify a payload Patrick Steinhardt
2026-09-04 13:23 ` [PATCH 00/11] Fix inconsistent ref storage format terminology Karthik Nayak
2026-09-04 17:15 ` Junio C Hamano
2026-09-07 10:00 ` Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 " Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 01/11] builtin/init: rename "--ref-format=" to "--ref-storage-format=" Patrick Steinhardt
2026-09-08 9:01 ` Kaartic Sivaraam
2026-09-09 7:00 ` Patrick Steinhardt
2026-09-09 9:14 ` Kaartic Sivaraam
2026-09-07 11:18 ` [PATCH v2 02/11] builtin/clone: " Patrick Steinhardt
2026-09-08 9:21 ` Kaartic Sivaraam
2026-09-09 7:03 ` Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 03/11] builtin/refs: " Patrick Steinhardt
2026-09-08 10:55 ` Kaartic Sivaraam
2026-09-09 7:03 ` Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 04/11] builtin/submodule: " Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 05/11] builtin/rev-parse: rename "--show-ref-format" to "--show-ref-storage-format" Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 06/11] help: rename "default-ref-format" to "default-ref-storage-format" Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 07/11] refs: expose function to parse reference URIs Patrick Steinhardt
2026-09-08 13:47 ` Kaartic Sivaraam
2026-09-09 7:03 ` Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 08/11] setup: refactor how we configure the ref storage format Patrick Steinhardt
2026-09-09 8:00 ` Kaartic Sivaraam
2026-09-09 9:23 ` Patrick Steinhardt [this message]
2026-09-07 11:18 ` [PATCH v2 09/11] setup: rename ref storage format environment variables Patrick Steinhardt
2026-09-09 8:10 ` Kaartic Sivaraam
2026-09-09 9:23 ` Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 10/11] setup: rename "init.defaultRefFormat" to "init.defaultRefStorageFormat" Patrick Steinhardt
2026-09-07 11:18 ` [PATCH v2 11/11] setup: allow "git init --ref-storage-format=" to specify a payload Patrick Steinhardt
2026-09-09 8:54 ` Kaartic Sivaraam
2026-09-09 9:23 ` Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 00/13] Fix inconsistent ref storage format terminology Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 01/13] parse-options: allow for hidden aliases Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 02/13] builtin/init: rename "--ref-format=" to "--ref-storage-format=" Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 03/13] builtin/clone: " Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 04/13] builtin/refs: " Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 05/13] builtin/submodule: " Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 06/13] builtin/rev-parse: rename "--show-ref-format" to "--show-ref-storage-format" Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 07/13] help: rename "default-ref-format" to "default-ref-storage-format" Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 08/13] refs: expose function to parse reference URIs Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 09/13] setup: refactor how we configure the ref storage format Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 10/13] setup: rename ref storage format environment variables Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 11/13] t: rename GIT_TEST_DEFAULT_REF_FORMAT Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 12/13] setup: rename "init.defaultRefFormat" to "init.defaultRefStorageFormat" Patrick Steinhardt
2026-09-09 11:12 ` [PATCH v3 13/13] setup: allow "--ref-storage-format=" to specify a payload 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=aqEllv3TicOLB7g0@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kaartic.sivaraam@gmail.com \
--cc=karthik.188@gmail.com \
/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.