Browse Source

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
Jens Lehmann 14 years ago committed by Junio C Hamano
parent
commit
1fb2550202
  1. 10
      Documentation/config.txt
  2. 2
      submodule.c
  3. 28
      t/t5526-fetch-submodules.sh

10
Documentation/config.txt

@ -900,9 +900,13 @@ diff.wordRegex::
characters are *ignorable* whitespace. characters are *ignorable* whitespace.


fetch.recurseSubmodules:: fetch.recurseSubmodules::
A boolean value which changes the behavior for fetch and pull, the This option can be either set to a boolean value or to 'on-demand'.
default is to not recursively fetch populated submodules unless Setting it to a boolean changes the behavior of fetch and pull to
configured otherwise. 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:: fetch.unpackLimit::
If the number of objects fetched over the git native If the number of objects fetched over the git native

2
submodule.c

@ -71,7 +71,7 @@ int submodule_config(const char *var, const char *value, void *cb)
if (!prefixcmp(var, "submodule.")) if (!prefixcmp(var, "submodule."))
return parse_submodule_config_option(var, value); return parse_submodule_config_option(var, value);
else if (!strcmp(var, "fetch.recursesubmodules")) { 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;
} }
return 0; return 0;

28
t/t5526-fetch-submodules.sh

@ -372,4 +372,32 @@ test_expect_success "'--recurse-submodules=on-demand' stops when no new submodul
test_cmp expect.err.file actual.err 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 test_done

Loading…
Cancel
Save