Documentation/git-clone: improve description for submodule recursing

There have been a few complaints on the mailing list that git-clone doesn't
respect the `submodule.recurse` setting, which every other command (that
potentially knows how to deal with submodules) respects.  In case of clone
this is not beneficial to respect as the user may not want to obtain all
submodules (assuming a pathspec of '.').

Improve the documentation such that the pathspec is mentioned in the
synopsis to alleviate the confusion around the submodule recursion flag
in git-clone.

While at it clarify that the option can be given multiple times for complex
pathspecs.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Stefan Beller 2017-12-04 18:53:32 -08:00 committed by Junio C Hamano
parent 1a4e40aa5d
commit bc29b0b971

View File

@ -14,7 +14,7 @@ SYNOPSIS
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>] [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
[--dissociate] [--separate-git-dir <git dir>] [--dissociate] [--separate-git-dir <git dir>]
[--depth <depth>] [--[no-]single-branch] [--no-tags] [--depth <depth>] [--[no-]single-branch] [--no-tags]
[--recurse-submodules] [--[no-]shallow-submodules] [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
[--jobs <n>] [--] <repository> [<directory>] [--jobs <n>] [--] <repository> [<directory>]
DESCRIPTION DESCRIPTION
@ -231,14 +231,17 @@ branch of some repository for search indexing.
After the clone is created, initialize and clone submodules After the clone is created, initialize and clone submodules
within based on the provided pathspec. If no pathspec is within based on the provided pathspec. If no pathspec is
provided, all submodules are initialized and cloned. provided, all submodules are initialized and cloned.
Submodules are initialized and cloned using their default This option can be given multiple times for pathspecs consisting
settings. The resulting clone has `submodule.active` set to of multiple entries. The resulting clone has `submodule.active` set to
the provided pathspec, or "." (meaning all submodules) if no the provided pathspec, or "." (meaning all submodules) if no
pathspec is provided. This is equivalent to running pathspec is provided.
`git submodule update --init --recursive` immediately after +
the clone is finished. This option is ignored if the cloned Submodules are initialized and cloned using their default settings. This is
repository does not have a worktree/checkout (i.e. if any of equivalent to running
`--no-checkout`/`-n`, `--bare`, or `--mirror` is given) `git submodule update --init --recursive <pathspec>` immediately after
the clone is finished. This option is ignored if the cloned repository does
not have a worktree/checkout (i.e. if any of `--no-checkout`/`-n`, `--bare`,
or `--mirror` is given)
--[no-]shallow-submodules:: --[no-]shallow-submodules::
All submodules which are cloned will be shallow with a depth of 1. All submodules which are cloned will be shallow with a depth of 1.