From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: "Eric Sunshine" <sunshine@sunshineco.com>,
"Jeppe Øland" <joland@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>
Subject: [PATCH v2 0/8] Improvements for ref storage formats with submodules
Date: Thu, 8 Aug 2024 09:35:21 +0200 [thread overview]
Message-ID: <cover.1723102259.git.ps@pks.im> (raw)
In-Reply-To: <CA+osTZVApTAMogBDMaPDEVViJHrFT=BOer=Py4fjTvpsifzfKA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4472 bytes --]
Hi,
this is the second version of my patch series that aims to improve
interaction of ref storage formats with submodules.
Changes compared to v1:
- I noticed that `git submodule add` also used to fail when used with
a preexisting repository that uses a different ref format.
- Add a preparatory refactoring that wraps overly long command lines
in "git-submodule.sh".
- Wire up support for `--ref-format=` in `git submodule add`.
Notably not included is a change to make `git submodule add/clone` honor
the ref storage format of the parent repository. I think it is somewhat
orthogonal to the changes I do in this series, and it is not entirely
obvious whether it is a good idea or not. We can still do this in a
future patch series, if we ever hear good arguments for it.
Thanks!
Patrick Steinhardt (8):
git-submodule.sh: break overly long command lines
builtin/submodule: allow cloning with different ref storage format
builtin/clone: propagate ref storage format to submodules
refs: fix ref storage format for submodule ref stores
builtin/submodule: allow "add" to use different ref storage format
submodule: fix leaking fetch tasks
submodule: fix leaking seen submodule names
object: fix leaking packfiles when closing object store
Documentation/git-submodule.txt | 10 +-
builtin/clone.c | 10 +-
builtin/submodule--helper.c | 46 +++++++-
git-submodule.sh | 82 ++++++++++++--
object.c | 9 ++
refs.c | 2 +-
submodule.c | 18 ++--
t/t5572-pull-submodule.sh | 1 +
t/t7418-submodule-sparse-gitmodules.sh | 1 +
t/t7424-submodule-mixed-ref-formats.sh | 144 +++++++++++++++++++++++++
10 files changed, 298 insertions(+), 25 deletions(-)
create mode 100755 t/t7424-submodule-mixed-ref-formats.sh
Range-diff against v1:
-: ---------- > 1: 6513c6b17d git-submodule.sh: break overly long command lines
1: a450759bd1 = 2: e6cda43878 builtin/submodule: allow cloning with different ref storage format
2: e5923c0b33 = 3: ed314f5333 builtin/clone: propagate ref storage format to submodules
3: aaff9134ed ! 4: f13356581e refs: fix ref storage format for submodule ref stores
@@ Commit message
$ git pull --recursive
fatal: Unable to find current revision in submodule path 'path/to/sub'
- Fix the bug by using the submodule repository's ref storage format
- instead.
+ The same issue occurs when adding a repository contained in the working
+ tree with a different ref storage format via `git submodule add`.
- Note that only the second added test fails without this fix. The other
- one is included regardless as it exercises other parts where we might
- end up accessing submodule ref stores.
+ Fix the bug by using the submodule repository's ref storage format
+ instead and add some tests. Note that the test for `git submodule
+ status` was included as a precaution, only. The command worked alright
+ even without the bugfix.
Reported-by: Jeppe Øland <joland@gmail.com>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
@@ t/t7424-submodule-mixed-ref-formats.sh: do
+ # Some tests migrate the ref storage format, which does not work with
+ # reflogs at the time of writing these tests.
+ git config set --global core.logAllRefUpdates false
++'
++
++test_expect_success 'add existing repository with different ref storage format' '
++ test_when_finished "rm -rf parent" &&
++
++ git init parent &&
++ (
++ cd parent &&
++ test_commit parent &&
++ git init --ref-format=$OTHER_FORMAT submodule &&
++ test_commit -C submodule submodule &&
++ git submodule add ./submodule
++ )
'
test_expect_success 'recursive clone propagates ref storage format' '
-: ---------- > 5: 4ce17e44a1 builtin/submodule: allow "add" to use different ref storage format
4: 8f8371c18a = 6: d92770290f submodule: fix leaking fetch tasks
5: 732142aaa6 = 7: e9421189ca submodule: fix leaking seen submodule names
6: 8dc7cc76d5 = 8: d05737c75f object: fix leaking packfiles when closing object store
--
2.46.0.46.g406f326d27.dirty
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-08-08 7:35 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-05 11:31 2.46 submodule breakage Jeppe Øland
2024-08-06 13:18 ` Jeppe Øland
2024-08-06 18:26 ` Eric Sunshine
2024-08-07 6:40 ` Patrick Steinhardt
2024-08-07 7:38 ` Patrick Steinhardt
2024-08-07 16:09 ` Junio C Hamano
2024-08-07 12:43 ` [PATCH 0/6] Improvements for ref storage formats with submodules Patrick Steinhardt
2024-08-07 12:43 ` [PATCH 1/6] builtin/submodule: allow cloning with different ref storage format Patrick Steinhardt
2024-08-07 14:45 ` [PATCH 0/6] Improvements for ref storage formats with submodules Jeppe Øland
2024-08-07 22:55 ` [PATCH 1/6] builtin/submodule: allow cloning with different ref storage format Junio C Hamano
2024-08-08 7:00 ` Patrick Steinhardt
2024-08-08 16:08 ` Junio C Hamano
2024-08-08 16:19 ` Patrick Steinhardt
2024-08-08 17:26 ` Junio C Hamano
2024-08-07 12:43 ` [PATCH 2/6] builtin/clone: propagate ref storage format to submodules Patrick Steinhardt
2024-08-07 23:07 ` Junio C Hamano
2024-08-07 12:43 ` [PATCH 3/6] refs: fix ref storage format for submodule ref stores Patrick Steinhardt
2024-08-07 12:44 ` [PATCH 4/6] submodule: fix leaking fetch tasks Patrick Steinhardt
2024-08-07 12:44 ` [PATCH 5/6] submodule: fix leaking seen submodule names Patrick Steinhardt
2024-08-07 12:44 ` [PATCH 6/6] object: fix leaking packfiles when closing object store Patrick Steinhardt
2024-08-07 13:18 ` [PATCH 0/6] Improvements for ref storage formats with submodules Patrick Steinhardt
2024-08-08 1:09 ` Junio C Hamano
2024-08-08 7:00 ` Patrick Steinhardt
2024-08-08 7:35 ` Patrick Steinhardt [this message]
2024-08-08 7:35 ` [PATCH v2 1/8] git-submodule.sh: break overly long command lines Patrick Steinhardt
2024-08-08 7:35 ` [PATCH v2 2/8] builtin/submodule: allow cloning with different ref storage format Patrick Steinhardt
2024-08-08 7:35 ` [PATCH v2 3/8] builtin/clone: propagate ref storage format to submodules Patrick Steinhardt
2024-08-08 8:03 ` Kristoffer Haugsbakk
2024-08-08 13:29 ` Patrick Steinhardt
2024-08-08 7:35 ` [PATCH v2 4/8] refs: fix ref storage format for submodule ref stores Patrick Steinhardt
2024-08-08 7:35 ` [PATCH v2 5/8] builtin/submodule: allow "add" to use different ref storage format Patrick Steinhardt
2024-08-08 7:35 ` [PATCH v2 6/8] submodule: fix leaking fetch tasks Patrick Steinhardt
2024-08-08 7:35 ` [PATCH v2 7/8] submodule: fix leaking seen submodule names Patrick Steinhardt
2024-08-08 7:36 ` [PATCH v2 8/8] object: fix leaking packfiles when closing object store Patrick Steinhardt
2024-08-08 16:24 ` [PATCH v2 0/8] Improvements for ref storage formats with submodules 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=cover.1723102259.git.ps@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=joland@gmail.com \
--cc=sunshine@sunshineco.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 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).