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