On 23/02/17 22:57, Stefan Beller wrote: > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > Documentation/git-checkout.txt | 7 +++++++ > builtin/checkout.c | 28 ++++++++++++++++++++++++++++ > t/lib-submodule-update.sh | 33 ++++++++++++++++++++++++--------- > t/t2013-checkout-submodule.sh | 5 +++++ > 4 files changed, 64 insertions(+), 9 deletions(-) > > diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt > index 8e2c0662dd..d6399c0af8 100644 > --- a/Documentation/git-checkout.txt > +++ b/Documentation/git-checkout.txt > @@ -256,6 +256,13 @@ section of linkgit:git-add[1] to learn how to operate the `--patch` mode. > out anyway. In other words, the ref can be held by more than one > worktree. > > +--[no-]recurse-submodules:: > + Using --recurse-submodules will update the content of all initialized > + submodules according to the commit recorded in the superproject. If > + local modifications in a submodule would be overwritten the checkout > + will fail unless `-f` is used. If nothing (or --no-recurse-submodules) > + is used, the work trees of submodules will not be updated. > + > <branch>:: > Branch to checkout; if it refers to a branch (i.e., a name that, > when prepended with "refs/heads/", is a valid ref), then that > diff --git a/builtin/checkout.c b/builtin/checkout.c > index f174f50303..207ce09771 100644 > --- a/builtin/checkout.c > +++ b/builtin/checkout.c > @@ -21,12 +21,31 @@ > #include "submodule-config.h" > #include "submodule.h" > > +static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT; > + > static const char * const checkout_usage[] = { > N_("git checkout [<options>] <branch>"), > N_("git checkout [<options>] [<branch>] -- <file>..."), > NULL, > }; > > +int option_parse_recurse_submodules(const struct option *opt, > + const char *arg, int unset) Again, this function should be marked static. [I also noted _two_ other local functions with the same name in builtin/fetch.c and builtin/push.c] ATB, Ramsay Jones