Re: [PATCH v4 1/3] fetch/pull: Add the --recurse-submodules option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 9, 2010, 21:16 UTC
- Message-ID
- <7vei9qfxzy.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <4CDD391C.2000905@web.de>
Jens Lehmann <Jens.Lehmann@web.de> writes:
Show 23 quoted lines
> Until now you had to call "git submodule update" (without -N|--no-fetch
> option) or something like "git submodule foreach git fetch" to fetch
> new commits in populated submodules from their remote.
> ...
> diff --git a/builtin/fetch.c b/builtin/fetch.c
> index d35f000..db3fba3 100644
> --- a/builtin/fetch.c
> +++ b/builtin/fetch.c
> ...
> @@ -784,28 +790,36 @@ static int add_remote_or_group(const char *name, struct string_list *list)
> return 1;
> }
>
> -static int fetch_multiple(struct string_list *list)
> +static void add_options_to_argv(int *argc, const char **argv)
> {
> - int i, result = 0;
> - const char *argv[11] = { "fetch", "--append" };
> -...
> +static int fetch_multiple(struct string_list *list)
> +{
> + int i, result = 0;
> + const char *argv[12] = { "fetch", "--append" };This used to be 11; are we adding something new? Ahh, possibly "--recurse_submodules".
Show 33 quoted lines
> diff --git a/submodule.c b/submodule.c
> index 91a4758..4d9b774 100644
> --- a/submodule.c
> +++ b/submodule.c
> @@ -63,7 +63,7 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt,
> }
> }
>
> -static int submodule_config(const char *var, const char *value, void *cb)
> +int submodule_config(const char *var, const char *value, void *cb)
> {
> if (!prefixcmp(var, "submodule."))
> return parse_submodule_config_option(var, value);
> @@ -229,6 +229,70 @@ void show_submodule_summary(FILE *f, const char *path,
> strbuf_release(&sb);
> }
>
> +int fetch_populated_submodules(int num_options, const char **options,
> + const char *prefix, int quiet)
> +{
> + int i, result = 0, argc = 0;
> + struct child_process cp;
> + const char **argv;
> + struct string_list_item *name_for_path;
> + const char *work_tree = get_git_work_tree();
> + if (!work_tree)
> + return 0;
> +
> + if (!the_index.initialized)
> + if (read_cache() < 0)
> + die("index file corrupt");
> +
> + argv = xcalloc(num_options + 5, sizeof(const char *));Where is this '5' coming from? "fetch" "--submodule-prefix", the prefix, and the terminating NULL? What did I miss?