config: teach the fetch.recurseSubmodules option the 'on-demand' value
To enable the user to change the default behavior of "git fetch" and "git pull" regarding submodule recursion add the new "on-demand" value which has just been added to the "--recurse-submodules" command line option. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									8f0700dd33
								
							
						
					
					
						commit
						1fb2550202
					
				|  | @ -900,9 +900,13 @@ diff.wordRegex:: | |||
| 	characters are *ignorable* whitespace. | ||||
|  | ||||
| fetch.recurseSubmodules:: | ||||
| 	A boolean value which changes the behavior for fetch and pull, the | ||||
| 	default is to not recursively fetch populated submodules unless | ||||
| 	configured otherwise. | ||||
| 	This option can be either set to a boolean value or to 'on-demand'. | ||||
| 	Setting it to a boolean changes the behavior of fetch and pull to | ||||
| 	unconditionally recurse into submodules when set to true or to not | ||||
| 	recurse at all when set to false. When set to 'on-demand' (the default | ||||
| 	value), fetch and pull will only recurse into a populated submodule | ||||
| 	when its superproject retrieves a commit that updates the submodule's | ||||
| 	reference. | ||||
|  | ||||
| fetch.unpackLimit:: | ||||
| 	If the number of objects fetched over the git native | ||||
|  |  | |||
|  | @ -71,7 +71,7 @@ int submodule_config(const char *var, const char *value, void *cb) | |||
| 	if (!prefixcmp(var, "submodule.")) | ||||
| 		return parse_submodule_config_option(var, value); | ||||
| 	else if (!strcmp(var, "fetch.recursesubmodules")) { | ||||
| 		config_fetch_recurse_submodules = git_config_bool(var, value); | ||||
| 		config_fetch_recurse_submodules = parse_fetch_recurse_submodules_arg(var, value); | ||||
| 		return 0; | ||||
| 	} | ||||
| 	return 0; | ||||
|  |  | |||
|  | @ -372,4 +372,32 @@ test_expect_success "'--recurse-submodules=on-demand' stops when no new submodul | |||
| 	test_cmp expect.err.file actual.err | ||||
| ' | ||||
|  | ||||
| test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config" ' | ||||
| 	( | ||||
| 		cd downstream && | ||||
| 		git fetch --recurse-submodules | ||||
| 	) && | ||||
| 	add_upstream_commit && | ||||
| 	git config --global fetch.recurseSubmodules false && | ||||
| 	head1=$(git rev-parse --short HEAD) && | ||||
| 	git add submodule && | ||||
| 	git commit -m "new submodule" && | ||||
| 	head2=$(git rev-parse --short HEAD) && | ||||
| 	echo "From $pwd/." > expect.err.2 && | ||||
| 	echo "   $head1..$head2  master     -> origin/master" >> expect.err.2 | ||||
| 	head -2 expect.err >> expect.err.2 && | ||||
| 	( | ||||
| 		cd downstream && | ||||
| 		git config fetch.recurseSubmodules on-demand && | ||||
| 		git fetch >../actual.out 2>../actual.err | ||||
| 	) && | ||||
| 	git config --global --unset fetch.recurseSubmodules && | ||||
| 	( | ||||
| 		cd downstream && | ||||
| 		git config --unset fetch.recurseSubmodules | ||||
| 	) && | ||||
| 	test_cmp expect.out.sub actual.out && | ||||
| 	test_cmp expect.err.2 actual.err | ||||
| ' | ||||
|  | ||||
| test_done | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Jens Lehmann
						Jens Lehmann