From: "Mahi Kolla via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Philippe Blain <levraiphilippeblain@gmail.com>,
Mahi Kolla <mahikolla@google.com>,
Emily Shaffer <emilyshaffer@google.com>,
Felipe Contreras <felipe.contreras@gmail.com>,
Mahi Kolla <mkolla2@illinois.edu>,
Mahi Kolla <mkolla2@illinois.edu>
Subject: [PATCH v6] clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled
Date: Sat, 14 Aug 2021 01:09:56 +0000 [thread overview]
Message-ID: <pull.1006.v6.git.1628903396783.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1006.v5.git.1628736366133.gitgitgadget@gmail.com>
From: Mahi Kolla <mkolla2@illinois.edu>
Based on current experience, when running git clone --recurse-submodules,
developers do not expect other commands such as pull or checkout to run
recursively into active submodules. However, setting submodule.recurse=true
at this step could make for a simpler workflow by eliminating the need for
the --recurse-submodules option in subsequent commands. To collect more
data on developers' preference in regards to making submodule.recurse=true
a default config value in the future, deploy this feature under the opt in
submodule.stickyRecursiveClone flag.
Signed-off-by: Mahi Kolla <mkolla2@illinois.edu>
---
clone: set submodule.recurse=true if submodule.stickyRecursiveClone
enabled
Based on current experience, when running git clone
--recurse-submodules, developers do not expect other commands such as
pull or checkout to run recursively into active submodules. However,
setting submodule.recurse=true at this step could make for a simpler
workflow by eliminating the need for the --recurse-submodules option in
subsequent commands. To collect more data on developers' behavior and
preferences when making submodule.recurse=true a default, deploy this
feature under the opt in submodule.stickyRecursiveClone flag.
Signed-off-by: Mahi Kolla mkolla2@illinois.edu
Since V1: Made this an opt in feature under a custom
submodule.stickyRecursiveClone flag as opposed to feature.experimental.
Updated tests to reflect this design change. Also updated commit
message. Additionally, I will be contributing from my personal email
going forward as opposed to my @google email.
cc: Philippe Blain levraiphilippeblain@gmail.com
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1006%2F24mahik%2Fmaster-v6
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1006/24mahik/master-v6
Pull-Request: https://github.com/gitgitgadget/git/pull/1006
Range-diff vs v5:
1: 2c6ffe00736 ! 1: e668fa403cf clone: set submodule.recurse=true if user enables feature.experimental flag
@@
## Metadata ##
-Author: Mahi Kolla <mahikolla@google.com>
+Author: Mahi Kolla <mkolla2@illinois.edu>
## Commit message ##
- clone: set submodule.recurse=true if user enables feature.experimental flag
+ clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled
- Currently, when running 'git clone --recurse-submodules', developers do not expect other commands such as 'pull' or 'checkout' to run recursively into active submodules. However, setting 'submodule.recurse' to true at this step could make for a simpler workflow by eliminating the '--recurse-submodules' option in subsequent commands. To collect more data on developers' preference in regards to making 'submodule.recurse=true' a default config value in the future, deploy this feature under the opt in feature.experimental flag.
+ Based on current experience, when running git clone --recurse-submodules,
+ developers do not expect other commands such as pull or checkout to run
+ recursively into active submodules. However, setting submodule.recurse=true
+ at this step could make for a simpler workflow by eliminating the need for
+ the --recurse-submodules option in subsequent commands. To collect more
+ data on developers' preference in regards to making submodule.recurse=true
+ a default config value in the future, deploy this feature under the opt in
+ submodule.stickyRecursiveClone flag.
- Since V1: Made this an opt in feature under the experimental flag. Updated tests to reflect this design change. Also updated commit message.
-
- Signed-off-by: Mahi Kolla <mahikolla@google.com>
+ Signed-off-by: Mahi Kolla <mkolla2@illinois.edu>
## builtin/clone.c ##
@@ builtin/clone.c: int cmd_clone(int argc, const char **argv, const char *prefix)
struct remote *remote;
int err = 0, complete_refs_before_fetch = 1;
int submodule_progress;
-+ int experimental_flag;
++ int sticky_recursive_clone;
struct transport_ls_refs_options transport_ls_refs_options =
TRANSPORT_LS_REFS_OPTIONS_INIT;
@@ builtin/clone.c: int cmd_clone(int argc, const char **argv, const char *prefix)
strbuf_detach(&sb, NULL));
}
-+ if(!git_config_get_bool("feature.experimental", &experimental_flag) &&
-+ experimental_flag) {
++ if (!git_config_get_bool("submodule.stickyRecursiveClone", &sticky_recursive_clone)
++ && sticky_recursive_clone) {
+ string_list_append(&option_config, "submodule.recurse=true");
+ }
+
@@ t/t5606-clone-options.sh: test_expect_success 'setup' '
'
-+test_expect_success 'feature.experimental flag manipulates submodule.recurse value' '
++test_expect_success 'submodule.stickyRecursiveClone flag manipulates submodule.recurse value' '
+
-+ test_config_global feature.experimental true &&
++ test_config_global submodule.stickyRecursiveClone true &&
+ git clone --recurse-submodules parent clone_recurse_true &&
+ test_cmp_config -C clone_recurse_true true submodule.recurse &&
+
-+ test_config_global feature.experimental false &&
++ test_config_global submodule.stickyRecursiveClone false &&
+ git clone --recurse-submodules parent clone_recurse_false &&
+ test_expect_code 1 git -C clone_recurse_false config --get submodule.recurse
+
builtin/clone.c | 6 ++++++
t/t5606-clone-options.sh | 12 ++++++++++++
2 files changed, 18 insertions(+)
diff --git a/builtin/clone.c b/builtin/clone.c
index 66fe66679c8..a08d9012243 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -986,6 +986,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
struct remote *remote;
int err = 0, complete_refs_before_fetch = 1;
int submodule_progress;
+ int sticky_recursive_clone;
struct transport_ls_refs_options transport_ls_refs_options =
TRANSPORT_LS_REFS_OPTIONS_INIT;
@@ -1130,6 +1131,11 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
strbuf_detach(&sb, NULL));
}
+ if (!git_config_get_bool("submodule.stickyRecursiveClone", &sticky_recursive_clone)
+ && sticky_recursive_clone) {
+ string_list_append(&option_config, "submodule.recurse=true");
+ }
+
if (option_required_reference.nr &&
option_optional_reference.nr)
die(_("clone --recursive is not compatible with "
diff --git a/t/t5606-clone-options.sh b/t/t5606-clone-options.sh
index 3a595c0f82c..d822153e4d2 100755
--- a/t/t5606-clone-options.sh
+++ b/t/t5606-clone-options.sh
@@ -16,6 +16,18 @@ test_expect_success 'setup' '
'
+test_expect_success 'submodule.stickyRecursiveClone flag manipulates submodule.recurse value' '
+
+ test_config_global submodule.stickyRecursiveClone true &&
+ git clone --recurse-submodules parent clone_recurse_true &&
+ test_cmp_config -C clone_recurse_true true submodule.recurse &&
+
+ test_config_global submodule.stickyRecursiveClone false &&
+ git clone --recurse-submodules parent clone_recurse_false &&
+ test_expect_code 1 git -C clone_recurse_false config --get submodule.recurse
+
+'
+
test_expect_success 'clone -o' '
git clone -o foo parent clone-o &&
base-commit: 66262451ec94d30ac4b80eb3123549cf7a788afd
--
gitgitgadget
next prev parent reply other threads:[~2021-08-14 1:10 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-02 17:29 [PATCH 0/2] clone: update submodule.recurse in config when using --recurse-submodule Mahi Kolla via GitGitGadget
2021-08-02 17:29 ` [PATCH 1/2] " Mahi Kolla via GitGitGadget
2021-08-02 17:29 ` [PATCH 2/2] " Mahi Kolla via GitGitGadget
2021-08-02 22:38 ` [PATCH v2 0/3] " Mahi Kolla via GitGitGadget
2021-08-02 22:38 ` [PATCH v2 1/3] " Mahi Kolla via GitGitGadget
2021-08-02 22:38 ` [PATCH v2 2/3] " Mahi Kolla via GitGitGadget
2021-08-02 22:38 ` [PATCH v2 3/3] clone test: update whitespace according to style guide Mahi Kolla via GitGitGadget
2021-08-02 23:23 ` [PATCH v3 0/4] clone: update submodule.recurse in config when using --recurse-submodule Mahi Kolla via GitGitGadget
2021-08-02 23:23 ` [PATCH v3 1/4] " Mahi Kolla via GitGitGadget
2021-08-03 3:20 ` Philippe Blain
2021-08-07 3:06 ` Mahi Kolla
2021-08-02 23:23 ` [PATCH v3 2/4] " Mahi Kolla via GitGitGadget
2021-08-02 23:23 ` [PATCH v3 3/4] clone test: update whitespace according to style guide Mahi Kolla via GitGitGadget
2021-08-02 23:23 ` [PATCH v3 4/4] clone: " Mahi Kolla via GitGitGadget
2021-08-03 3:08 ` [PATCH v3 0/4] clone: update submodule.recurse in config when using --recurse-submodule Philippe Blain
2021-08-03 22:41 ` Junio C Hamano
2021-08-09 19:11 ` [PATCH v4] " Mahi Kolla via GitGitGadget
2021-08-09 21:15 ` Junio C Hamano
2021-08-10 7:26 ` Mahi Kolla
2021-08-10 18:36 ` Junio C Hamano
2021-08-10 23:04 ` Philippe Blain
2021-08-10 23:59 ` Mahi Kolla
2021-08-11 5:02 ` Junio C Hamano
2021-08-12 2:46 ` [PATCH v5] clone: set submodule.recurse=true if user enables feature.experimental flag Mahi Kolla via GitGitGadget
2021-08-12 4:20 ` Junio C Hamano
2021-08-12 23:54 ` Emily Shaffer
2021-08-13 3:35 ` Philippe Blain
2021-08-13 4:12 ` Mahi Kolla
2021-08-13 19:53 ` Junio C Hamano
2021-08-13 14:59 ` Junio C Hamano
2021-08-13 4:34 ` Junio C Hamano
2021-08-13 20:23 ` Emily Shaffer
2021-08-13 20:30 ` Junio C Hamano
2021-08-13 20:38 ` Emily Shaffer
2021-08-13 20:48 ` Mahi Kolla
2021-08-13 20:52 ` Junio C Hamano
2021-08-13 17:33 ` Felipe Contreras
2021-08-14 1:09 ` Mahi Kolla via GitGitGadget [this message]
2021-08-14 18:05 ` [PATCH v6] clone: set submodule.recurse=true if submodule.stickyRecursiveClone enabled Junio C Hamano
2021-08-17 23:02 ` Emily Shaffer
2021-08-18 19:57 ` Junio C Hamano
2021-08-18 20:15 ` [PATCH] fixup! " Junio C Hamano
2021-08-19 17:41 ` Emily Shaffer
2021-08-30 20:59 ` Emily Shaffer
2021-08-30 21:23 ` Junio C Hamano
2021-08-18 22:40 ` [PATCH v6] " Philippe Blain
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=pull.1006.v6.git.1628903396783.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=emilyshaffer@google.com \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=levraiphilippeblain@gmail.com \
--cc=mahikolla@google.com \
--cc=mkolla2@illinois.edu \
/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.