Prathamesh Chavan <pc44...@gmail.com> writes:

> +static void sync_submodule(const struct cache_entry *list_item, void 
> *cb_data)
> +{
> +     struct sync_cb *info = cb_data;
> +     const struct submodule *sub;
> +     char *sub_key, *remote_key;
> +     char *sub_origin_url, *super_config_url, *displaypath;
> +     struct strbuf sb = STRBUF_INIT;
> +     struct child_process cp = CHILD_PROCESS_INIT;
> +
> +     if (!is_submodule_initialized(list_item->name))
> +             return;
> +
> +     sub = submodule_from_path(null_sha1, list_item->name);
> +
> +     if (!sub || !sub->url)
> +             die(_("no url found for submodule path '%s' in .gitmodules"),
> +                   list_item->name);
> +
> +     if (starts_with_dot_dot_slash(sub->url) || 
> starts_with_dot_slash(sub->url)) {
> +             char *remote_url, *up_path;
> +             char *remote = get_default_remote();
> +             char *remote_key = xstrfmt("remote.%s.url", remote);
> +             free(remote);
> +

Have a blank line between the decls and the first statement
(i.e. before "free(remote)").  The blank line after "free(remote)"
may or may not be there.

> +             if (git_config_get_string(remote_key, &remote_url))
> +                     remote_url = xgetcwd();
> +...
> +
> +     prepare_submodule_repo_env(&cp.env_array);
> +     cp.git_cmd = 1;
> +     cp.dir = list_item->name;
> +     argv_array_pushl(&cp.args, "submodule--helper",
> +                      "print-default-remote", NULL);
> +     if (capture_command(&cp, &sb, 0))
> +             die(_("failed to get the default remote for submodule '%s'"),
> +                   list_item->name);

OK.  Perhaps in a distant future when the repository object
abstraction is ready, we can do this within the main process, but
for now, due to the presence of cp.dir, this is the best we can do.

> +     strbuf_strip_suffix(&sb, "\n");
> +     remote_key = xstrfmt("remote.%s.url", sb.buf);
> +     strbuf_release(&sb);
> +
> +     child_process_init(&cp);
> +     prepare_submodule_repo_env(&cp.env_array);
> +     cp.git_cmd = 1;
> +     cp.dir = list_item->name;
> +     argv_array_pushl(&cp.args, "config", remote_key, sub_origin_url, NULL);
> +     if (run_command(&cp))
> +             die(_("failed to update remote for submodule '%s'"),
> +                   list_item->name);

Likewise.

Looks like a fairly faithful conversion to me.

Thanks.

Reply via email to