git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 --]

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