From: Atharva Raykar <raykar.ath@gmail.com>
To: git@vger.kernel.org
Cc: Atharva Raykar <raykar.ath@gmail.com>,
Emily Shaffer <emilyshaffer@google.com>,
Jonathan Nieder <jrnieder@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Christian Couder <christian.couder@gmail.com>,
Shourya Shukla <periperidip@gmail.com>
Subject: [GSoC] [PATCH v2 0/2] submodule--helper: introduce subcommands for sh to C conversion
Date: Tue, 8 Jun 2021 15:26:53 +0530 [thread overview]
Message-ID: <20210608095655.47324-1-raykar.ath@gmail.com> (raw)
In-Reply-To: <20210605113913.29005-1-raykar.ath@gmail.com>
I have elaborated the commit message more, to explain why a warning is emitted
for an empty value in 'submodule.active'. The warning has been worded more
accurately than before.
An unnecessary extra check for 'submodule.active' has been avoided.
I have included a range diff, in case that is useful.
My fork containing these changes can be found at:
https://github.com/tfidfwastaken/git/commits/submodule-add-in-c
Emily and Jonathan: To be on the safe side, I have CC'd you so you know where I
keep my changes, and we can avoid potential conflicts, as I believe you are
working on this area as well. Just so you know, every week, I update the link to
all my ongoing work at:
https://atharvaraykar.me/gitnotes/#my-public-gitgit-branches
Atharva Raykar (2):
submodule--helper: introduce add-clone subcommand
submodule--helper: introduce add-config subcommand
builtin/submodule--helper.c | 315 ++++++++++++++++++++++++++++++++++++
git-submodule.sh | 66 +-------
2 files changed, 317 insertions(+), 64 deletions(-)
Range-diff against v1:
1: 398bfa713d = 1: 4374ebb6b1 submodule--helper: introduce add-clone subcommand
2: f9954cfcf7 ! 2: 406022d0f7 submodule--helper: introduce add-config subcommand
@@ Commit message
This is meant to be a faithful conversion from shell to C, with only one
minor change: A warning is emitted if no value is specified in
- 'submodule.active', ie, the config looks like: "[submodule] active\n".
+ 'submodule.active', ie, the config looks like: "[submodule] active\n",
+ because it is an invalid configuration. It would be helpful to let the
+ user know that the pathspec is unset, and the value of
+ 'submodule.<name>.active' might be set to 'true' so that they can
+ rectify their configuration and prevent future surprises (especially
+ given that the latter variable has a higher priority than the former).
The structure of the conditional to check if we need to set the 'active'
toggle looks different from the shell version -- but behaves the same.
@@ builtin/submodule--helper.c: static int add_clone(int argc, const char **argv, c
+ char *key, *submod_pathspec = NULL;
+ struct child_process add_submod = CHILD_PROCESS_INIT;
+ struct child_process add_gitmodules = CHILD_PROCESS_INIT;
-+ int pathspec_key_exists;
++ int pathspec_key_exists, activate = 0;
+
+ key = xstrfmt("submodule.%s.url", add_data->sm_name);
+ git_config_set_gently(key, add_data->realrepo);
@@ builtin/submodule--helper.c: static int add_clone(int argc, const char **argv, c
+ */
+ pathspec_key_exists = !git_config_get_string("submodule.active",
+ &submod_pathspec);
-+ if (pathspec_key_exists && !submod_pathspec)
-+ warning(_("The submodule.active configuration exists, but "
-+ "no pathspec was specified. Setting the value of "
-+ "submodule.%s.active to 'true'."), add_data->sm_name);
++ if (pathspec_key_exists && !submod_pathspec) {
++ warning(_("The submodule.active configuration exists, but the "
++ "pathspec was unset. If the submodule is not already "
++ "active, the value of submodule.%s.active will be "
++ "be set to 'true'."), add_data->sm_name);
++ activate = 1;
++ }
+
+ /*
-+ * If submodule.active does not exist, we will activate this
-+ * module unconditionally.
++ * If submodule.active does not exist, or if the pathspec was unset,
++ * we will activate this module unconditionally.
+ *
+ * Otherwise, we ask is_submodule_active(), which iterates
+ * through all the values of 'submodule.active' to determine
+ * if this module is already active.
+ */
-+ if (!pathspec_key_exists ||
++ if (!pathspec_key_exists || activate ||
+ !is_submodule_active(the_repository, add_data->sm_path)) {
+ key = xstrfmt("submodule.%s.active", add_data->sm_name);
+ git_config_set_gently(key, "true");
--
2.31.1
next prev parent reply other threads:[~2021-06-08 9:58 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-05 11:39 [GSoC] [PATCH 0/2] submodule--helper: introduce subcommands for sh to C conversion Atharva Raykar
2021-06-05 11:39 ` [GSoC] [PATCH 1/2] submodule--helper: introduce add-clone subcommand Atharva Raykar
2021-06-06 3:38 ` Bagas Sanjaya
2021-06-06 9:06 ` Christian Couder
2021-06-05 11:39 ` [GSoC] [PATCH 2/2] submodule--helper: introduce add-config subcommand Atharva Raykar
2021-06-07 9:24 ` Christian Couder
2021-06-07 11:24 ` Atharva Raykar
2021-06-08 9:56 ` Atharva Raykar [this message]
2021-06-08 9:56 ` [GSoC] [PATCH v2 1/2] submodule--helper: introduce add-clone subcommand Atharva Raykar
2021-06-08 12:32 ` Đoàn Trần Công Danh
2021-06-09 10:31 ` Atharva Raykar
2021-06-09 13:06 ` Đoàn Trần Công Danh
2021-06-09 13:10 ` Atharva Raykar
2021-06-09 4:24 ` Junio C Hamano
2021-06-09 10:31 ` Atharva Raykar
2021-06-08 9:56 ` [GSoC] [PATCH v2 2/2] submodule--helper: introduce add-config subcommand Atharva Raykar
2021-06-10 8:39 ` [GSoC] [PATCH v3 0/2] submodule--helper: introduce subcommands for sh to C conversion Atharva Raykar
2021-06-10 8:39 ` [PATCH v3 1/2] submodule--helper: introduce add-clone subcommand Atharva Raykar
2021-06-11 6:10 ` Junio C Hamano
2021-06-11 7:32 ` Atharva Raykar
2021-06-11 7:59 ` Junio C Hamano
2021-06-10 8:39 ` [PATCH v3 2/2] submodule--helper: introduce add-config subcommand Atharva Raykar
2021-06-14 12:51 ` [GSoC] [PATCH v4 0/3] submodule--helper: introduce subcommands for sh to C conversion Atharva Raykar
2021-06-14 12:51 ` [PATCH v4 1/3] submodule--helper: refactor module_clone() Atharva Raykar
2021-06-15 3:51 ` Junio C Hamano
2021-06-15 9:03 ` Atharva Raykar
2021-06-14 12:51 ` [PATCH v4 2/3] submodule--helper: introduce add-clone subcommand Atharva Raykar
2021-06-14 12:51 ` [PATCH v4 3/3] submodule--helper: introduce add-config subcommand Atharva Raykar
2021-06-14 19:51 ` Rafael Silva
2021-06-14 20:12 ` Eric Sunshine
2021-06-15 9:37 ` Rafael Silva
2021-06-15 7:09 ` Atharva Raykar
2021-06-15 9:38 ` [GSoC] [PATCH v5 0/3] submodule--helper: introduce subcommands for sh to C conversion Atharva Raykar
2021-06-15 9:38 ` [PATCH v5 1/3] submodule--helper: refactor module_clone() Atharva Raykar
2021-06-15 9:38 ` [PATCH v5 2/3] submodule--helper: introduce add-clone subcommand Atharva Raykar
2021-06-15 9:38 ` [PATCH v5 3/3] submodule--helper: introduce add-config subcommand Atharva Raykar
2021-06-15 14:57 ` [GSoC] [PATCH v6 0/3] submodule--helper: introduce subcommands for sh to C conversion Atharva Raykar
2021-06-15 14:57 ` [PATCH v6 1/3] submodule--helper: refactor module_clone() Atharva Raykar
2021-06-15 14:57 ` [PATCH v6 2/3] submodule--helper: introduce add-clone subcommand Atharva Raykar
2021-06-15 14:57 ` [PATCH v6 3/3] submodule--helper: introduce add-config subcommand Atharva Raykar
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=20210608095655.47324-1-raykar.ath@gmail.com \
--to=raykar.ath@gmail.com \
--cc=christian.couder@gmail.com \
--cc=emilyshaffer@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=periperidip@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).