Re: [GSoC][PATCH 5/6 v2] submodule: port submodule subcommand sync from shell to C
- From
Christian Couder <christian.couder@gmail.com>
- Date
- Jun 27, 2017, 06:37 UTC
- Message-ID
- <CAP8UFD3iuSKEuuE2aGv9yW+PkD7_5F4sfLF7VSVAJXYhDUMX1A@mail.gmail.com>
- In-Reply-To
- <20170626231108.23640-5-pc44800@gmail.com>
On Tue, Jun 27, 2017 at 1:11 AM, Prathamesh Chavan <pc44800@gmail.com> wrote:
> +static char *get_up_path(const char *path)
> +{
> + int i = count_slashes(path);
> + int l = strlen(path);Nit: "l" is quite similar to "i" in many fonts, so maybe use "len" instead of "l", but see below.
> + struct strbuf sb = STRBUF_INIT; > + > + while (i--) > + strbuf_addstr(&sb, "../");
Nit: a regular "for" loop like the following might be easier to review:
for (i = count_slashes(path); i; i--)
strbuf_addstr(&sb, "../");Show 6 quoted lines
> + /* > + *Check if 'path' ends with slash or not > + *for having the same output for dir/sub_dir > + *and dir/sub_dir/ > + */ > + if (!is_dir_sep(path[l - 1]))
As "l" is used only here, maybe we could get rid of this variable altogether with something like:
if (!is_dir_sep(path[strlen(path) - 1]))
> + strbuf_addstr(&sb, "../"); > + > + return strbuf_detach(&sb, NULL); > +}
Show 15 quoted lines
> +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)I think it should be "(!sub || !sub->url)".
> + die(_("no url found for submodule path '%s' in .gitmodules"),
> + list_item->name);