From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Subject: Re: [PATCH 0/7] clone: fix init of refdb with wrong object format
Date: Wed, 6 Dec 2023 14:09:29 +0100 [thread overview]
Message-ID: <ZXByiXj5rLUHgoAU@tanuki> (raw)
In-Reply-To: <cover.1701863960.git.ps@pks.im>
[-- Attachment #1: Type: text/plain, Size: 3208 bytes --]
On Wed, Dec 06, 2023 at 01:39:44PM +0100, Patrick Steinhardt wrote:
> Hi,
>
> when using git-clone(1), we initialize the complete repository before we
> know about the object format used by the remote repository. This means
> that we'll potentially create the refdb with the wrong object format in
> case the local default object format and remote object format are not
> the same.
>
> This isn't much of a problem in the context of the files backend, which
> never records the object format anyway. But it is a problem for the
> reftable backend, which indeed records the object format in the on-disk
> data structures. The result is thus a reftable with wrong object format.
>
> This patch series aims to solve this issue by initializing the refdb at
> a later point after we have learned about the remote object format. This
> requires some careful reordering of code. Unfortunately, the end result
> is not easily verifiable and thus I didn't add tests here. But it does
> fix cloning of SHA256 repositories with the in-progress state of the
> reftable backend.
>
> While at it I noticed that this actually fixes a bug with bundle URIs
> when the object formats diverge in this way.
>
> The series is layed out as follows:
>
> - Patch 1 + 2: split out a function to create the refdb and make it
> possible to skip its initialization in `init_db()`.
>
> - Patch 3: allows git-remote-curl(1) to work with repos that get
> initialized during its lifetime.
>
> - Patch 4 - 6: address various corner cases where we access the refdb
> before we learned about the object format.
>
> - Patch 7: move initialization of the refdb to happen after we have
> learned about the object format.
>
> This patch series is actually the last incompatibility for the reftable
> backend that I have found. All tests except for the files-backend
> specific ones pass now with the current state I have at [1], which is
> currently at e6f2f592b7 (t: skip tests which are incompatible with
> reftable, 2023-11-24)
I forgot to add the link to the merge request that contains the current
reftable backend's implementation in case anybody is interested:
https://gitlab.com/gitlab-org/git/-/merge_requests/58.
Patrick
> Thanks in advance for your reviews!
>
> Patrick
>
> Patrick Steinhardt (7):
> setup: extract function to create the refdb
> setup: allow skipping creation of the refdb
> remote-curl: rediscover repository when fetching refs
> builtin/clone: fix bundle URIs with mismatching object formats
> builtin/clone: set up sparse checkout later
> builtin/clone: skip reading HEAD when retrieving remote
> builtin/clone: create the refdb with the correct object format
>
> builtin/clone.c | 65 ++++++++++++----------
> remote-curl.c | 7 ++-
> remote.c | 26 +++++----
> remote.h | 1 +
> setup.c | 106 +++++++++++++++++++++---------------
> setup.h | 6 +-
> t/t5558-clone-bundle-uri.sh | 18 ++++++
> 7 files changed, 140 insertions(+), 89 deletions(-)
>
> --
> 2.43.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-12-06 13:09 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 12:39 [PATCH 0/7] clone: fix init of refdb with wrong object format Patrick Steinhardt
2023-12-06 12:39 ` [PATCH 1/7] setup: extract function to create the refdb Patrick Steinhardt
2023-12-06 21:10 ` Karthik Nayak
2023-12-07 7:22 ` Patrick Steinhardt
2023-12-08 22:54 ` Junio C Hamano
2023-12-11 11:34 ` Patrick Steinhardt
2023-12-11 15:50 ` Karthik Nayak
2023-12-06 12:39 ` [PATCH 2/7] setup: allow skipping creation of " Patrick Steinhardt
2023-12-06 12:39 ` [PATCH 3/7] remote-curl: rediscover repository when fetching refs Patrick Steinhardt
2023-12-08 23:09 ` Junio C Hamano
2023-12-11 11:35 ` Patrick Steinhardt
2023-12-06 12:40 ` [PATCH 4/7] builtin/clone: fix bundle URIs with mismatching object formats Patrick Steinhardt
2023-12-06 21:13 ` Karthik Nayak
2023-12-07 7:22 ` Patrick Steinhardt
2023-12-08 23:11 ` Junio C Hamano
2023-12-06 12:40 ` [PATCH 5/7] builtin/clone: set up sparse checkout later Patrick Steinhardt
2023-12-06 12:40 ` [PATCH 6/7] builtin/clone: skip reading HEAD when retrieving remote Patrick Steinhardt
2023-12-06 12:40 ` [PATCH 7/7] builtin/clone: create the refdb with the correct object format Patrick Steinhardt
2023-12-06 13:09 ` Patrick Steinhardt [this message]
2023-12-10 3:16 ` [PATCH 0/7] clone: fix init of refdb with wrong " Junio C Hamano
2023-12-11 11:34 ` Patrick Steinhardt
2023-12-11 14:57 ` Junio C Hamano
2023-12-11 15:32 ` Patrick Steinhardt
2023-12-11 22:17 ` brian m. carlson
2023-12-12 7:00 ` [PATCH v2 " Patrick Steinhardt
2023-12-12 7:00 ` [PATCH v2 1/7] setup: extract function to create the refdb Patrick Steinhardt
2023-12-12 7:00 ` [PATCH v2 2/7] setup: allow skipping creation of " Patrick Steinhardt
2023-12-12 7:00 ` [PATCH v2 3/7] remote-curl: rediscover repository when fetching refs Patrick Steinhardt
2023-12-12 7:00 ` [PATCH v2 4/7] builtin/clone: fix bundle URIs with mismatching object formats Patrick Steinhardt
2023-12-12 7:00 ` [PATCH v2 5/7] builtin/clone: set up sparse checkout later Patrick Steinhardt
2023-12-12 7:01 ` [PATCH v2 6/7] builtin/clone: skip reading HEAD when retrieving remote Patrick Steinhardt
2023-12-12 7:01 ` [PATCH v2 7/7] builtin/clone: create the refdb with the correct object format Patrick Steinhardt
2023-12-12 19:20 ` [PATCH v2 0/7] clone: fix init of refdb with wrong " Junio C Hamano
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=ZXByiXj5rLUHgoAU@tanuki \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).