Browse Source

Merge branch 'sb/submodule-config-parse'

Code simplification.

* sb/submodule-config-parse:
  submodule-config: "goto" removal in parse_config()
maint
Junio C Hamano 9 years ago
parent
commit
8b70042569
  1. 74
      submodule-config.c

74
submodule-config.c

@ -257,78 +257,62 @@ static int parse_config(const char *var, const char *value, void *data)
if (!name_and_item_from_var(var, &name, &item)) if (!name_and_item_from_var(var, &name, &item))
return 0; return 0;


submodule = lookup_or_create_by_name(me->cache, me->gitmodules_sha1, submodule = lookup_or_create_by_name(me->cache,
name.buf); me->gitmodules_sha1,
name.buf);


if (!strcmp(item.buf, "path")) { if (!strcmp(item.buf, "path")) {
struct strbuf path = STRBUF_INIT; if (!value)
if (!value) {
ret = config_error_nonbool(var); ret = config_error_nonbool(var);
goto release_return; else if (!me->overwrite && submodule->path != NULL)
}
if (!me->overwrite && submodule->path != NULL) {
warn_multiple_config(me->commit_sha1, submodule->name, warn_multiple_config(me->commit_sha1, submodule->name,
"path"); "path");
goto release_return; else {
if (submodule->path)
cache_remove_path(me->cache, submodule);
free((void *) submodule->path);
submodule->path = xstrdup(value);
cache_put_path(me->cache, submodule);
} }

if (submodule->path)
cache_remove_path(me->cache, submodule);
free((void *) submodule->path);
strbuf_addstr(&path, value);
submodule->path = strbuf_detach(&path, NULL);
cache_put_path(me->cache, submodule);
} else if (!strcmp(item.buf, "fetchrecursesubmodules")) { } else if (!strcmp(item.buf, "fetchrecursesubmodules")) {
/* when parsing worktree configurations we can die early */ /* when parsing worktree configurations we can die early */
int die_on_error = is_null_sha1(me->gitmodules_sha1); int die_on_error = is_null_sha1(me->gitmodules_sha1);
if (!me->overwrite && if (!me->overwrite &&
submodule->fetch_recurse != RECURSE_SUBMODULES_NONE) { submodule->fetch_recurse != RECURSE_SUBMODULES_NONE)
warn_multiple_config(me->commit_sha1, submodule->name, warn_multiple_config(me->commit_sha1, submodule->name,
"fetchrecursesubmodules"); "fetchrecursesubmodules");
goto release_return; else
} submodule->fetch_recurse = parse_fetch_recurse(

var, value,
submodule->fetch_recurse = parse_fetch_recurse(var, value,
die_on_error); die_on_error);
} else if (!strcmp(item.buf, "ignore")) { } else if (!strcmp(item.buf, "ignore")) {
struct strbuf ignore = STRBUF_INIT; if (!value)
if (!me->overwrite && submodule->ignore != NULL) { ret = config_error_nonbool(var);
else if (!me->overwrite && submodule->ignore != NULL)
warn_multiple_config(me->commit_sha1, submodule->name, warn_multiple_config(me->commit_sha1, submodule->name,
"ignore"); "ignore");
goto release_return; else if (strcmp(value, "untracked") &&
} strcmp(value, "dirty") &&
if (!value) { strcmp(value, "all") &&
ret = config_error_nonbool(var); strcmp(value, "none"))
goto release_return;
}
if (strcmp(value, "untracked") && strcmp(value, "dirty") &&
strcmp(value, "all") && strcmp(value, "none")) {
warning("Invalid parameter '%s' for config option " warning("Invalid parameter '%s' for config option "
"'submodule.%s.ignore'", value, var); "'submodule.%s.ignore'", value, var);
goto release_return; else {
free((void *) submodule->ignore);
submodule->ignore = xstrdup(value);
} }

free((void *) submodule->ignore);
strbuf_addstr(&ignore, value);
submodule->ignore = strbuf_detach(&ignore, NULL);
} else if (!strcmp(item.buf, "url")) { } else if (!strcmp(item.buf, "url")) {
struct strbuf url = STRBUF_INIT;
if (!value) { if (!value) {
ret = config_error_nonbool(var); ret = config_error_nonbool(var);
goto release_return; } else if (!me->overwrite && submodule->url != NULL) {
}
if (!me->overwrite && submodule->url != NULL) {
warn_multiple_config(me->commit_sha1, submodule->name, warn_multiple_config(me->commit_sha1, submodule->name,
"url"); "url");
goto release_return; } else {
free((void *) submodule->url);
submodule->url = xstrdup(value);
} }

free((void *) submodule->url);
strbuf_addstr(&url, value);
submodule->url = strbuf_detach(&url, NULL);
} }


release_return:
strbuf_release(&name); strbuf_release(&name);
strbuf_release(&item); strbuf_release(&item);



Loading…
Cancel
Save