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 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.