Re: [GSoC][PATCH 5/6 v2] submodule: port submodule subcommand sync from shell to C
From: Christian Couder <hidden>
Date: 2017-06-27 06:37:55
On Tue, Jun 27, 2017 at 1:11 AM, Prathamesh Chavan [off-list ref] 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, "../");
+ /* + *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); +}
+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);