From: Marc Branchaud <marcnarc@xiplink.com>
To: git@vger.kernel.org
Subject: [PATCH] fetch: Ensure that fetch.recurseSubmodules overrides submodule.recurse.
Date: Fri, 21 Sep 2018 14:51:49 -0400 [thread overview]
Message-ID: <20180921185149.8670-1-marcnarc@xiplink.com> (raw)
Also document this fact.
Signed-off-by: Marc Branchaud <marcnarc@xiplink.com>
---
I ran into this bug when I had both fetch.recurseSubmodules=on-demand and
submodule.recurse=true, and submodule.recurse was set *after*
fetch.recurseSubmodules in my config.
The fix ensures that fetch.recurseSubmodules always overrides
submodule.recurse. If neither is set then fetch still behaves as if
fetch.recurseSubmodules=on-demand (the documented default).
I'm not sure if this is the most elegant implementation, but it gets the job
done.
M.
Documentation/config.txt | 6 ++++--
builtin/fetch.c | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index eb66a11975..67b0adc1d4 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1514,7 +1514,8 @@ fetch.recurseSubmodules::
recurse at all when set to false. When set to 'on-demand' (the default
value), fetch and pull will only recurse into a populated submodule
when its superproject retrieves a commit that updates the submodule's
- reference.
+ reference. This option overrides the more general submodule.recurse
+ option, for the `fetch` command.
fetch.fsckObjects::
If it is set to true, git-fetch-pack will check all fetched
@@ -3465,7 +3466,8 @@ submodule.active::
submodule.recurse::
Specifies if commands recurse into submodules by default. This
applies to all commands that have a `--recurse-submodules` option,
- except `clone`.
+ except `clone`. Also, the `fetch` command's behaviour can be specified
+ independently with the fetch.recurseSubmodules option.
Defaults to false.
submodule.fetchJobs::
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 61bec5d213..08b8bf2741 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -60,6 +60,7 @@ static struct transport *gsecondary;
static const char *submodule_prefix = "";
static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
static int recurse_submodules_default = RECURSE_SUBMODULES_ON_DEMAND;
+static int recurse_submodules_set_explicitly = 0;
static int shown_url = 0;
static struct refspec refmap = REFSPEC_INIT_FETCH;
static struct list_objects_filter_options filter_options;
@@ -78,7 +79,8 @@ static int git_fetch_config(const char *k, const char *v, void *cb)
return 0;
}
- if (!strcmp(k, "submodule.recurse")) {
+ if (!strcmp(k, "submodule.recurse") &&
+ !recurse_submodules_set_explicitly) {
int r = git_config_bool(k, v) ?
RECURSE_SUBMODULES_ON : RECURSE_SUBMODULES_OFF;
recurse_submodules = r;
@@ -88,6 +90,7 @@ static int git_fetch_config(const char *k, const char *v, void *cb)
max_children = parse_submodule_fetchjobs(k, v);
return 0;
} else if (!strcmp(k, "fetch.recursesubmodules")) {
+ recurse_submodules_set_explicitly = 1;
recurse_submodules = parse_fetch_recurse_submodules_arg(k, v);
return 0;
}
--
2.19.0.1.g5109f9487a
next reply other threads:[~2018-09-21 19:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-21 18:51 Marc Branchaud [this message]
2018-09-21 19:22 ` [PATCH] fetch: Ensure that fetch.recurseSubmodules overrides submodule.recurse Stefan Beller
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=20180921185149.8670-1-marcnarc@xiplink.com \
--to=marcnarc@xiplink.com \
--cc=git@vger.kernel.org \
/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).