Hi, Nicolas Morey-Chaisemartin wrote: > git pull used to not parse the submodule.recurse config option and simply > consider the --recurse-submodules CLI option. > When using the config option, submodules would only be fetched recursively > while the CLi option would tigger both fetch and update/merge. > > Reported-by: Magnus Homann <magnus@xxxxxxxxx> > Signed-off-by: Nicolas Morey-Chaisemartin <nicolas@xxxxxxxxxxxxxxxxxxxxxx> nits: * Git's commit messages usually use the present tense to describe the behavior of Git in absence of a patch, as though writing a bug report. They use the imperative mood to describe what the patch will do, as though commanding the code to do better. * spelling: s/CLi/CLI/; s/tigger/trigger/ * please also wrap lines consistently That would make "git pull" supports a --recurse-submodules option but does not parse the submodule.recurse configuration item to set the default for that option. Meanwhile "git fetch" does support submodule.recurse, producing confusing behavior: when submodule.recurse is enabled, "git pull" recursively fetches submodules but does not update them after fetch. Handle submodule.recurse in "git pull" to fix this. > --- > builtin/pull.c | 5 +++++ > 1 file changed, 5 insertions(+) Can you add a test to avoid future changes causing this to regress? See t/t5572-pull-submodule.sh for some existing tests to get inspiration from. > diff --git a/builtin/pull.c b/builtin/pull.c > index 7fe281414..e4edf23c5 100644 > --- a/builtin/pull.c > +++ b/builtin/pull.c > @@ -326,6 +326,11 @@ static int git_pull_config(const char *var, const char *value, void *cb) > config_autostash = git_config_bool(var, value); > return 0; > } > + if (!strcmp(var, "submodule.recurse")) { > + int r = git_config_bool(var, value) ? > + RECURSE_SUBMODULES_ON : RECURSE_SUBMODULES_OFF; > + recurse_submodules = r; > + } > return git_default_config(var, value, cb); > } > The rest looks good. Thanks for working on this, Jonathan