diff options
Diffstat (limited to 'builtin/push.c')
-rw-r--r-- | builtin/push.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/builtin/push.c b/builtin/push.c index 35cce532f2..f9d21921ba 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -224,13 +224,21 @@ static int option_parse_recurse_submodules(const struct option *opt, const char *arg, int unset) { int *flags = opt->value; + + if (*flags & (TRANSPORT_RECURSE_SUBMODULES_CHECK | + TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND)) + die("%s can only be used once.", opt->long_name); + if (arg) { if (!strcmp(arg, "check")) *flags |= TRANSPORT_RECURSE_SUBMODULES_CHECK; + else if (!strcmp(arg, "on-demand")) + *flags |= TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND; else die("bad %s argument: %s", opt->long_name, arg); } else - die("option %s needs an argument (check)", opt->long_name); + die("option %s needs an argument (check|on-demand)", + opt->long_name); return 0; } |