builtin/push.c: respect 'submodule.recurse' option
The closest mapping from the boolean 'submodule.recurse' set to "yes" to the variety of submodule push modes is "on-demand", so implement that. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9071c078af
commit
4e53d6a541
@ -498,6 +498,10 @@ static int git_push_config(const char *k, const char *v, void *cb)
|
||||
const char *value;
|
||||
if (!git_config_get_value("push.recursesubmodules", &value))
|
||||
recurse_submodules = parse_push_recurse_submodules_arg(k, value);
|
||||
} else if (!strcmp(k, "submodule.recurse")) {
|
||||
int val = git_config_bool(k, v) ?
|
||||
RECURSE_SUBMODULES_ON_DEMAND : RECURSE_SUBMODULES_OFF;
|
||||
recurse_submodules = val;
|
||||
}
|
||||
|
||||
return git_default_config(k, v, NULL);
|
||||
|
@ -126,6 +126,27 @@ test_expect_success 'push succeeds if submodule commit not on remote but using o
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'push succeeds if submodule commit not on remote but using auto-on-demand via submodule.recurse config' '
|
||||
(
|
||||
cd work/gar/bage &&
|
||||
>recurse-on-demand-from-submodule-recurse-config &&
|
||||
git add recurse-on-demand-from-submodule-recurse-config &&
|
||||
git commit -m "Recurse submodule.recurse from config junk"
|
||||
) &&
|
||||
(
|
||||
cd work &&
|
||||
git add gar/bage &&
|
||||
git commit -m "Recurse submodule.recurse from config for gar/bage" &&
|
||||
git -c submodule.recurse push ../pub.git master &&
|
||||
# Check that the supermodule commit got there
|
||||
git fetch ../pub.git &&
|
||||
git diff --quiet FETCH_HEAD master &&
|
||||
# Check that the submodule commit got there too
|
||||
cd gar/bage &&
|
||||
git diff --quiet origin/master master
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'push recurse-submodules on command line overrides config' '
|
||||
(
|
||||
cd work/gar/bage &&
|
||||
|
Loading…
Reference in New Issue
Block a user