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:
Junio C Hamano
2017-07-13 16:14:54 -07:00
8 changed files with 193 additions and 41 deletions

View File

@ -1138,6 +1138,32 @@ static void calculate_changed_submodule_paths(void)
initialized_fetch_ref_tips = 0;
}
int submodule_touches_in_range(struct object_id *excl_oid,
struct object_id *incl_oid)
{
struct string_list subs = STRING_LIST_INIT_DUP;
struct argv_array args = ARGV_ARRAY_INIT;
int ret;
gitmodules_config();
/* No need to check if there are no submodules configured */
if (!submodule_from_path(NULL, NULL))
return 0;
argv_array_push(&args, "--"); /* args[0] program name */
argv_array_push(&args, oid_to_hex(incl_oid));
argv_array_push(&args, "--not");
argv_array_push(&args, oid_to_hex(excl_oid));
collect_changed_submodules(&subs, &args);
ret = subs.nr;
argv_array_clear(&args);
free_submodules_oids(&subs);
return ret;
}
struct submodule_parallel_fetch {
int count;
struct argv_array args;