Merge branch 'sb/pull-rebase-submodule'
"git pull --rebase --recurse-submodules" learns to rebase the branch in the submodules to an updated base. * sb/pull-rebase-submodule: builtin/fetch cleanup: always set default value for submodule recursing pull: optionally rebase submodules (remote submodule changes only) builtin/fetch: parse recurse-submodules-default at default options parsing builtin/fetch: factor submodule recurse parsing out to submodule config
This commit is contained in:
@ -37,7 +37,7 @@ static int prune = -1; /* unspecified */
|
||||
#define PRUNE_BY_DEFAULT 0 /* do we prune by default? */
|
||||
|
||||
static int all, append, dry_run, force, keep, multiple, update_head_ok, verbosity, deepen_relative;
|
||||
static int progress = -1, recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
|
||||
static int progress = -1;
|
||||
static int tags = TAGS_DEFAULT, unshallow, update_shallow, deepen;
|
||||
static int max_children = -1;
|
||||
static enum transport_family family;
|
||||
@ -49,25 +49,12 @@ static struct strbuf default_rla = STRBUF_INIT;
|
||||
static struct transport *gtransport;
|
||||
static struct transport *gsecondary;
|
||||
static const char *submodule_prefix = "";
|
||||
static const char *recurse_submodules_default;
|
||||
static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
|
||||
static int recurse_submodules_default = RECURSE_SUBMODULES_ON_DEMAND;
|
||||
static int shown_url = 0;
|
||||
static int refmap_alloc, refmap_nr;
|
||||
static const char **refmap_array;
|
||||
|
||||
static int option_parse_recurse_submodules(const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
{
|
||||
if (unset) {
|
||||
recurse_submodules = RECURSE_SUBMODULES_OFF;
|
||||
} else {
|
||||
if (arg)
|
||||
recurse_submodules = parse_fetch_recurse_submodules_arg(opt->long_name, arg);
|
||||
else
|
||||
recurse_submodules = RECURSE_SUBMODULES_ON;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int git_fetch_config(const char *k, const char *v, void *cb)
|
||||
{
|
||||
if (!strcmp(k, "fetch.prune")) {
|
||||
@ -116,9 +103,9 @@ static struct option builtin_fetch_options[] = {
|
||||
N_("number of submodules fetched in parallel")),
|
||||
OPT_BOOL('p', "prune", &prune,
|
||||
N_("prune remote-tracking branches no longer on remote")),
|
||||
{ OPTION_CALLBACK, 0, "recurse-submodules", NULL, N_("on-demand"),
|
||||
{ OPTION_CALLBACK, 0, "recurse-submodules", &recurse_submodules, N_("on-demand"),
|
||||
N_("control recursive fetching of submodules"),
|
||||
PARSE_OPT_OPTARG, option_parse_recurse_submodules },
|
||||
PARSE_OPT_OPTARG, option_fetch_parse_recurse_submodules },
|
||||
OPT_BOOL(0, "dry-run", &dry_run,
|
||||
N_("dry run")),
|
||||
OPT_BOOL('k', "keep", &keep, N_("keep downloaded pack")),
|
||||
@ -138,9 +125,11 @@ static struct option builtin_fetch_options[] = {
|
||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG, NULL, 1 },
|
||||
{ OPTION_STRING, 0, "submodule-prefix", &submodule_prefix, N_("dir"),
|
||||
N_("prepend this to submodule path output"), PARSE_OPT_HIDDEN },
|
||||
{ OPTION_STRING, 0, "recurse-submodules-default",
|
||||
&recurse_submodules_default, NULL,
|
||||
N_("default mode for recursion"), PARSE_OPT_HIDDEN },
|
||||
{ OPTION_CALLBACK, 0, "recurse-submodules-default",
|
||||
&recurse_submodules_default, N_("on-demand"),
|
||||
N_("default for recursive fetching of submodules "
|
||||
"(lower priority than config files)"),
|
||||
PARSE_OPT_HIDDEN, option_fetch_parse_recurse_submodules },
|
||||
OPT_BOOL(0, "update-shallow", &update_shallow,
|
||||
N_("accept refs that update .git/shallow")),
|
||||
{ OPTION_CALLBACK, 0, "refmap", NULL, N_("refmap"),
|
||||
@ -1350,10 +1339,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
|
||||
deepen = 1;
|
||||
|
||||
if (recurse_submodules != RECURSE_SUBMODULES_OFF) {
|
||||
if (recurse_submodules_default) {
|
||||
int arg = parse_fetch_recurse_submodules_arg("--recurse-submodules-default", recurse_submodules_default);
|
||||
set_config_fetch_recurse_submodules(arg);
|
||||
}
|
||||
set_config_fetch_recurse_submodules(recurse_submodules_default);
|
||||
gitmodules_config();
|
||||
git_config(submodule_config, NULL);
|
||||
}
|
||||
|
Reference in New Issue
Block a user