doc: --recurse-submodules mostly applies to active submodules

The documentation refers to "initialized" or "populated" submodules,
to explain which submodules are affected by '--recurse-submodules', but
the real terminology here is 'active' submodules. Update the
documentation accordingly.

Some terminology:
- Active is defined in gitsubmodules(7), it only involves the
  configuration variables 'submodule.active', 'submodule.<name>.active'
  and 'submodule.<name>.url'. The function
  submodule.c::is_submodule_active checks that a submodule is active.
- Populated means that the submodule's working tree is present (and the
  gitfile correctly points to the submodule repository), i.e. either the
  superproject was cloned with ` --recurse-submodules`, or the user ran
  `git submodule update --init`, or `git submodule init [<path>]` and
  `git submodule update [<path>]` separately which populated the
  submodule working tree. This does not involve the 3 configuration
  variables above.
- Initialized (at least in the context of the man pages involved in this
  patch) means both "populated" and "active" as defined above, i.e. what
  `git submodule update --init` does.

The --recurse-submodules option mostly affects active submodules. An
exception is `git fetch` where the option affects populated submodules.
As a consequence, in `git pull --recurse-submodules` the fetch affects
populated submodules, but the resulting working tree update only affects
active submodules.

In the documentation of `git-pull`, let's distinguish between the
fetching part which affects populated submodules, and the updating of
worktrees, which only affects active submodules.

Signed-off-by: Damien Robert <damien.olivier.robert+git@gmail.com>
Helped-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Damien Robert
2020-04-06 15:57:09 +02:00
committed by Junio C Hamano
parent 4da9e99e6e
commit acbfae32a3
6 changed files with 9 additions and 7 deletions

View File

@ -292,7 +292,7 @@ Note that this option uses the no overlay mode by default (see also
--recurse-submodules:: --recurse-submodules::
--no-recurse-submodules:: --no-recurse-submodules::
Using `--recurse-submodules` will update the content of all initialized Using `--recurse-submodules` will update the content of all active
submodules according to the commit recorded in the superproject. If submodules according to the commit recorded in the superproject. If
local modifications in a submodule would be overwritten the checkout local modifications in a submodule would be overwritten the checkout
will fail unless `-f` is used. If nothing (or `--no-recurse-submodules`) will fail unless `-f` is used. If nothing (or `--no-recurse-submodules`)

View File

@ -93,7 +93,7 @@ OPTIONS
with `--no-index`. with `--no-index`.
--recurse-submodules:: --recurse-submodules::
Recursively search in each submodule that has been initialized and Recursively search in each submodule that is active and
checked out in the repository. When used in combination with the checked out in the repository. When used in combination with the
<tree> option the prefix of all submodule output will be the name of <tree> option the prefix of all submodule output will be the name of
the parent project's <tree> object. This option has no effect the parent project's <tree> object. This option has no effect

View File

@ -148,7 +148,7 @@ a space) at the start of each line:
top directory. top directory.
--recurse-submodules:: --recurse-submodules::
Recursively calls ls-files on each submodule in the repository. Recursively calls ls-files on each active submodule in the repository.
Currently there is only support for the --cached mode. Currently there is only support for the --cached mode.
--abbrev[=<n>]:: --abbrev[=<n>]::

View File

@ -85,8 +85,10 @@ OPTIONS
Pass --verbose to git-fetch and git-merge. Pass --verbose to git-fetch and git-merge.
--[no-]recurse-submodules[=yes|on-demand|no]:: --[no-]recurse-submodules[=yes|on-demand|no]::
This option controls if new commits of all populated submodules should This option controls if new commits of populated submodules should
be fetched and updated, too (see linkgit:git-fetch[1], linkgit:git-config[1] and linkgit:gitmodules[5]). be fetched, and if the working trees of active submodules should be
updated, too (see linkgit:git-fetch[1], linkgit:git-config[1] and
linkgit:gitmodules[5]).
+ +
If the checkout is done via rebase, local submodule commits are rebased as well. If the checkout is done via rebase, local submodule commits are rebased as well.
+ +

View File

@ -116,7 +116,7 @@ OPTIONS
located in. located in.
--[no-]recurse-submodules:: --[no-]recurse-submodules::
Using --recurse-submodules will update the content of all initialized Using --recurse-submodules will update the content of all active
submodules according to the commit recorded in the superproject by submodules according to the commit recorded in the superproject by
calling read-tree recursively, also setting the submodules' HEAD to be calling read-tree recursively, also setting the submodules' HEAD to be
detached at that commit. detached at that commit.

View File

@ -181,7 +181,7 @@ name, the guessing is aborted. You can explicitly give a name with
--recurse-submodules:: --recurse-submodules::
--no-recurse-submodules:: --no-recurse-submodules::
Using `--recurse-submodules` will update the content of all Using `--recurse-submodules` will update the content of all
initialized submodules according to the commit recorded in the active submodules according to the commit recorded in the
superproject. If nothing (or `--no-recurse-submodules`) is superproject. If nothing (or `--no-recurse-submodules`) is
used, submodules working trees will not be updated. Just used, submodules working trees will not be updated. Just
like linkgit:git-submodule[1], this will detach `HEAD` of the like linkgit:git-submodule[1], this will detach `HEAD` of the