From: Junio C Hamano <gitster@pobox.com>
To: K Jayatheerth <jayatheerthkulkarni2005@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v7 2/2] submodule: skip redundant active entries when pattern covers path
Date: Tue, 27 May 2025 07:42:44 -0700 [thread overview]
Message-ID: <xmqqcyburu6z.fsf@gitster.g> (raw)
In-Reply-To: <20250524073628.58944-3-jayatheerthkulkarni2005@gmail.com> (K. Jayatheerth's message of "Sat, 24 May 2025 13:06:28 +0530")
K Jayatheerth <jayatheerthkulkarni2005@gmail.com> writes:
> configure_added_submodule always writes an explicit submodule.<name>.active
> entry, even when the new path is already matched by submodule.active
> patterns. This leads to unnecessary and cluttered configuration.
It might be less cluttered but is it a good thing?
Earlier, if submodule.active were b* (as documented in the "git help
submodules") and then you added submodule "baz", your "baz" would be
kept active even after you reconfigured submodule.active to another
pattern. With this change, that is no longer true, which to existing
users is a change in behaviour, and to some it may appear a regression.
According to that documentation, presense of submodule.<name>.url is
also a signal that the submodule is activated. If we are going to
omit setting .active because its path matches submodule.active,
shouldn't we also be checking if .url exists and omit setting
.active as well?
> Introduce a single helper to centralize wildmatch-based pattern lookup.
> In configure_added_submodule, wrap the active-entry write in a conditional
> that only fires when that helper reports no existing pattern covers the
> submodule’s path.
The new helper is a maintenance burden to keep in sync with
submodule.c:is_tree_submodule_active(); if we really want to go this
route, the patch should extract that "ah, submodule.active is set so
let's turn it into pathspec and see if the path matches" part of the
logic to make sure the logic is shared. But I am wondering if we
can do this without any new helper.
> @@ -3370,17 +3390,7 @@ static void configure_added_submodule(struct add_data *add_data)
> * is_submodule_active(), since that function needs to find
> * out the value of "submodule.active" again anyway.
> */
> - if (!git_config_get("submodule.active")) {
> - /*
> - * If the submodule being added isn't already covered by the
> - * current configured pathspec, set the submodule's active flag
> - */
> - if (!is_submodule_active(the_repository, add_data->sm_path)) {
> - key = xstrfmt("submodule.%s.active", add_data->sm_name);
> - git_config_set_gently(key, "true");
> - free(key);
> - }
> - } else {
> + if (!submodule_active_matches_path(add_data->sm_path)) {
I.e. Can we replace this if() condition with something like this?
/*
* Explicitly set 'submodule.<name>.active' only if it is not
* 'active' due to other reasons.
*/
if (!is_submodule_active(the_repository, add_data->sm_path)) {
That is, we ask if the submodule is already active (we are before
adding submodule.<name>.active for this thing---if may be active due
to submodule.active or submodule.<name>.url) and enter the block
only when it is not yet.
That way, this codepath does not have to worry about the exact logic
that determines if a submodule is 'active' even when its .active
configuration variable is not set.
> key = xstrfmt("submodule.%s.active", add_data->sm_name);
> git_config_set_gently(key, "true");
> free(key);
next prev parent reply other threads:[~2025-05-27 14:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-24 7:36 [PATCH v7 0/2] Avoid submodule overwritten and skip redundant active entries K Jayatheerth
2025-05-24 7:36 ` [PATCH v7 1/2] submodule: prevent overwriting .gitmodules entry on path reuse K Jayatheerth
2025-05-27 14:01 ` Junio C Hamano
2025-05-24 7:36 ` [PATCH v7 2/2] submodule: skip redundant active entries when pattern covers path K Jayatheerth
2025-05-27 14:42 ` Junio C Hamano [this message]
2025-05-29 4:23 ` JAYATHEERTH K
2025-06-04 4:22 ` Junio C Hamano
2025-06-06 14:41 ` JAYATHEERTH K
2025-06-08 3:27 ` [PATCH v8 0/2] Avoid submodule overwritten and skip redundant active entries K Jayatheerth
2025-06-08 3:27 ` [PATCH v8 1/2] submodule: prevent overwriting .gitmodules entry on path reuse K Jayatheerth
2025-07-09 2:50 ` D. Ben Knoble
2025-07-20 12:25 ` JAYATHEERTH K
2025-07-25 17:28 ` Ben Knoble
2025-06-08 3:27 ` [PATCH v8 2/2] submodule: skip redundant active entries when pattern covers path K Jayatheerth
2025-07-09 2:50 ` D. Ben Knoble
2025-07-09 14:52 ` Junio C Hamano
2025-07-17 16:58 ` Junio C Hamano
2025-07-18 14:24 ` JAYATHEERTH K
2025-07-07 22:34 ` [PATCH v8 0/2] Avoid submodule overwritten and skip redundant active entries 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=xmqqcyburu6z.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=jayatheerthkulkarni2005@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.
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).