From: Emily Shaffer <emilyshaffer@google.com>
To: git@vger.kernel.org
Cc: "Emily Shaffer" <emilyshaffer@google.com>,
"Albert Cui" <albertcui@google.com>,
"Phillip Wood" <phillip.wood123@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Matheus Tavares Bernardino" <matheus.bernardino@usp.br>,
"Jonathan Nieder" <jrnieder@gmail.com>,
"Jacob Keller" <jacob.keller@gmail.com>,
"Atharva Raykar" <raykar.ath@gmail.com>
Subject: [PATCH v2 0/4] cache parent project's gitdir in submodules
Date: Tue, 15 Jun 2021 17:45:04 -0700 [thread overview]
Message-ID: <20210616004508.87186-1-emilyshaffer@google.com> (raw)
In-Reply-To: <20210611225428.1208973-1-emilyshaffer@google.com>
The reception for this series seemed pretty good in v1, so I'm dropping
the RFC.
Tested: https://github.com/nasamuffin/git/actions/runs/941100646
Sinec v1, mostly platform-friendliness fixes. Also added documentation
for the new config option - wordsmithing help is always welcome.
- Emily
Emily Shaffer (4):
t7400-submodule-basic: modernize inspect() helper
introduce submodule.superprojectGitDir cache
submodule: cache superproject gitdir during absorbgitdirs
submodule: cache superproject gitdir during 'update'
Documentation/config/submodule.txt | 12 ++++++++
builtin/submodule--helper.c | 4 +++
git-submodule.sh | 10 ++++++
submodule.c | 10 ++++++
t/t7400-submodule-basic.sh | 49 ++++++++++++++----------------
t/t7406-submodule-update.sh | 10 ++++++
t/t7412-submodule-absorbgitdirs.sh | 9 +++++-
7 files changed, 77 insertions(+), 27 deletions(-)
Range-diff against v1:
1: d6284438fb = 1: a6718eea80 t7400-submodule-basic: modernize inspect() helper
2: 56470e2eab ! 2: 4cebe7bcb5 introduce submodule.superprojectGitDir cache
@@ Commit message
Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
+ ## Documentation/config/submodule.txt ##
+@@ Documentation/config/submodule.txt: submodule.alternateErrorStrategy::
+ `ignore`, `info`, `die`. Default is `die`. Note that if set to `ignore`
+ or `info`, and if there is an error with the computed alternate, the
+ clone proceeds as if no alternate was specified.
++
++submodule.superprojectGitDir::
++ The relative path from the submodule's worktree to the superproject's
++ gitdir. This config should only be present in projects which are
++ submodules, but is not guaranteed to be present in every submodule. It
++ is set automatically during submodule creation.
+++
++ In situations where more than one superproject references the same
++ submodule worktree, the value of this config and the behavior of
++ operations which use it are undefined. To reference a single project
++ from multiple superprojects, it is better to create a worktree of the
++ submodule for each superproject.
+
## builtin/submodule--helper.c ##
@@ builtin/submodule--helper.c: static int module_clone(int argc, const char **argv, const char *prefix)
git_config_set_in_file(p, "submodule.alternateErrorStrategy",
3: 42f954f523 ! 3: df97a9c2bb submodule: cache superproject gitdir during absorbgitdirs
@@ submodule.c: static void relocate_single_git_dir_into_superproject(const char *p
## t/t7412-submodule-absorbgitdirs.sh ##
@@ t/t7412-submodule-absorbgitdirs.sh: test_expect_success 'absorb the git dir' '
- test -d .git/modules/sub1 &&
git status >actual.1 &&
git -C sub1 rev-parse HEAD >actual.2 &&
-+ test . -ef "$(git -C sub1 config submodule.superprojectGitDir)" &&
test_cmp expect.1 actual.1 &&
- test_cmp expect.2 actual.2
+- test_cmp expect.2 actual.2
++ test_cmp expect.2 actual.2 &&
++
++ # make sure the submodule cached the superproject gitdir correctly
++ test-tool path-utils real_path . >expect &&
++ test-tool path-utils real_path \
++ "$(git -C sub1 config submodule.superprojectGitDir)" >actual &&
++
++ test_cmp expect actual
'
+
+ test_expect_success 'absorbing does not fail for deinitialized submodules' '
4: 4f55ab42c7 ! 4: a3f3be58ad submodule: cache superproject gitdir during 'update'
@@ git-submodule.sh: cmd_update()
+ # Cache a pointer to the superproject's gitdir. This may have
+ # changed, so rewrite it unconditionally. Writes it to worktree
+ # if applicable, otherwise to local.
++ relative_gitdir="$(git rev-parse --path-format=relative \
++ --prefix "${sm_path}" \
++ --git-dir)"
+
-+ sp_gitdir="$(git rev-parse --absolute-git-dir)"
-+ relative_gitdir="$(realpath --relative-to "$sm_path" "$sp_gitdir")"
+ git -C "$sm_path" config --worktree \
+ submodule.superprojectgitdir "$relative_gitdir"
+
@@ git-submodule.sh: cmd_update()
(
## t/t7406-submodule-update.sh ##
-@@ t/t7406-submodule-update.sh: test_expect_success 'submodule update --quiet passes quietness to merge/rebase'
+@@ t/t7406-submodule-update.sh: test_expect_success 'submodule update --quiet passes quietness to fetch with a s
)
'
--
2.32.0.272.g935e593368-goog
next prev parent reply other threads:[~2021-06-16 0:45 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-11 22:54 [RFC PATCH 0/4] cache parent project's gitdir in submodules Emily Shaffer
2021-06-11 22:54 ` [RFC PATCH 1/4] t7400-submodule-basic: modernize inspect() helper Emily Shaffer
2021-06-14 4:52 ` Junio C Hamano
2021-06-11 22:54 ` [RFC PATCH 2/4] introduce submodule.superprojectGitDir cache Emily Shaffer
2021-06-14 5:09 ` Junio C Hamano
2021-06-15 22:00 ` Emily Shaffer
2021-06-11 22:54 ` [RFC PATCH 3/4] submodule: cache superproject gitdir during absorbgitdirs Emily Shaffer
2021-06-14 6:18 ` Junio C Hamano
2021-06-11 22:54 ` [RFC PATCH 4/4] submodule: cache superproject gitdir during 'update' Emily Shaffer
2021-06-14 6:22 ` Junio C Hamano
2021-06-15 21:27 ` Emily Shaffer
2021-06-12 20:12 ` [RFC PATCH 0/4] cache parent project's gitdir in submodules Jacob Keller
2021-06-14 7:26 ` Junio C Hamano
2021-06-15 21:18 ` Emily Shaffer
2021-06-16 0:45 ` Emily Shaffer [this message]
2021-06-16 0:45 ` [PATCH v2 1/4] t7400-submodule-basic: modernize inspect() helper Emily Shaffer
2021-07-27 17:12 ` Jonathan Tan
2021-08-19 17:46 ` Emily Shaffer
2021-06-16 0:45 ` [PATCH v2 2/4] introduce submodule.superprojectGitDir cache Emily Shaffer
2021-06-16 4:40 ` Junio C Hamano
2021-06-16 4:43 ` Junio C Hamano
2021-06-18 0:03 ` Emily Shaffer
2021-06-18 0:00 ` Emily Shaffer
2021-07-27 17:46 ` Jonathan Tan
2021-08-19 17:53 ` Emily Shaffer
2021-10-14 19:25 ` Ævar Arnfjörð Bjarmason
2021-06-16 0:45 ` [PATCH v2 3/4] submodule: cache superproject gitdir during absorbgitdirs Emily Shaffer
2021-06-16 0:45 ` [PATCH v2 4/4] submodule: cache superproject gitdir during 'update' Emily Shaffer
2021-07-27 17:51 ` Jonathan Tan
2021-08-19 18:02 ` Emily Shaffer
2021-08-19 20:09 ` [PATCH v3 0/4] cache parent project's gitdir in submodules Emily Shaffer
2021-08-19 20:09 ` [PATCH v3 1/4] t7400-submodule-basic: modernize inspect() helper Emily Shaffer
2021-08-19 20:09 ` [PATCH v3 2/4] introduce submodule.superprojectGitDir record Emily Shaffer
2021-08-20 0:38 ` Derrick Stolee
2021-10-13 19:36 ` Emily Shaffer
2021-09-04 17:20 ` Matheus Tavares
2021-10-13 19:39 ` Emily Shaffer
2021-08-19 20:09 ` [PATCH v3 3/4] submodule: record superproject gitdir during absorbgitdirs Emily Shaffer
2021-08-20 0:50 ` Derrick Stolee
2021-10-13 19:42 ` Emily Shaffer
2021-09-04 17:27 ` Matheus Tavares
2021-10-14 18:40 ` Emily Shaffer
2021-08-19 20:09 ` [PATCH v3 4/4] submodule: record superproject gitdir during 'update' Emily Shaffer
2021-08-20 0:59 ` Derrick Stolee
2021-10-14 18:45 ` Emily Shaffer
2021-08-19 21:56 ` [PATCH v3 0/4] cache parent project's gitdir in submodules Junio C Hamano
2021-08-20 1:09 ` Derrick Stolee
2021-10-13 18:51 ` Emily Shaffer
2021-10-14 17:12 ` Derrick Stolee
2021-10-14 18:52 ` Emily Shaffer
2021-09-04 17:50 ` Matheus Tavares Bernardino
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210616004508.87186-1-emilyshaffer@google.com \
--to=emilyshaffer@google.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=albertcui@google.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jacob.keller@gmail.com \
--cc=jrnieder@gmail.com \
--cc=matheus.bernardino@usp.br \
--cc=phillip.wood123@gmail.com \
--cc=raykar.ath@gmail.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).