Subject: Re: [PATCH v2 2/7] fetch/pull: Add the 'on-demand' value to the --recurse-submodules option

From: Marc Branchaud <[email-masked]>
Date: Wed, 02 Mar 2011 11:00:29 -0500

On 11-03-01 06:01 PM, Jens Lehmann wrote:
> Until now the --recurse-submodules option could only be used to either
> fetch all populated submodules recursively or to disable recursion
> completely. As fetch and pull now by default just fetch those submodules
> for which new commits have been fetched in the superproject, a command
> line option to enforce that behavior is needed to be able to override
> configuration settings.

Strictly speaking, this patch should add the 'on-demand' value to the first
patch's --submodule-default option.  Perhaps I'm being a bit too uptight
though...

> Signed-off-by: Jens Lehmann <[email-masked]>
> ---
>  Documentation/fetch-options.txt |   16 +++++++--
>  Documentation/git-pull.txt      |    2 +-
>  builtin/fetch.c                 |   22 ++++++++++--
>  git-pull.sh                     |    3 ++
>  submodule.c                     |    8 +++-
>  submodule.h                     |    2 +-
>  t/t5526-fetch-submodules.sh     |   71 +++++++++++++++++++++++++++++++++++++++
>  7 files changed, 114 insertions(+), 10 deletions(-)
> 
> diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
> index ae22f75..f28c0b1 100644
> --- a/Documentation/fetch-options.txt
> +++ b/Documentation/fetch-options.txt
> @@ -65,9 +65,19 @@ ifndef::git-pull[]
>  	specified with the remote.<name>.tagopt setting. See
>  	linkgit:git-config[1].
> 
> ---[no-]recurse-submodules::
> -	This option controls if new commits of all populated submodules should
> -	be fetched too (see linkgit:git-config[1] and linkgit:gitmodules[5]).
> +--recurse-submodules[=yes|on-demand|no]::
> +	This option controls if and under what conditions new commits of all

Nit: Remove "all" from the above line.

> +	populated submodules should be fetched too. It can be used as a
> +	boolean option to completely disable recursion when set to 'no' or to
> +	unconditionally recurse into all populated submodules when set to
> +	'yes', which is the default when this option is used without any
> +	value. If 'on-demand' is used, it will only recurse into those
> +	submodules where new commits have been fetched in the superproject
> +	(also see linkgit:git-config[1] and linkgit:gitmodules[5]).

Nit: Replace that last sentence with

	Use 'on-demand' to only recurse into a submodule when the
	superproject retrieves a commit that updates the submodule's
	reference.

Also, this has to change again with patch 5 (Don't recurse into a submodule
when commits are already present).

		M.