Stefan Beller <sbeller@xxxxxxxxxx> writes: > Currently submodule.<name>.update is only handled by git-submodule.sh. > C code will start to need to make use of that value as more of the > functionality of git-submodule.sh moves into library code in C. > > Add the update field to 'struct submodule' and populate it so it can > be read as sm->update or from sm->update_command. > > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > submodule-config.c | 22 ++++++++++++++++++++++ > submodule-config.h | 11 +++++++++++ > 2 files changed, 33 insertions(+) > > diff --git a/submodule-config.c b/submodule-config.c > index afe0ea8..a1af5de 100644 > --- a/submodule-config.c > +++ b/submodule-config.c > @@ -194,6 +194,8 @@ static struct submodule *lookup_or_create_by_name(struct submodule_cache *cache, > > submodule->path = NULL; > submodule->url = NULL; > + submodule->update = SM_UPDATE_UNSPECIFIED; > + submodule->update_command = NULL; > submodule->fetch_recurse = RECURSE_SUBMODULES_NONE; > submodule->ignore = NULL; > > @@ -311,6 +313,26 @@ static int parse_config(const char *var, const char *value, void *data) > free((void *) submodule->url); > submodule->url = xstrdup(value); > } > + } else if (!strcmp(item.buf, "update")) { > + if (!value) > + ret = config_error_nonbool(var); > + else if (!me->overwrite && > + submodule->update != SM_UPDATE_UNSPECIFIED) Funny indentation here (locally fixable). Thanks to this change, we do not need "'!= NULL' removal" for this location in 2/6. > + warn_multiple_config(me->commit_sha1, submodule->name, > + "update"); > + else { > + submodule->update_command = NULL; > + if (!strcmp(value, "none")) > + submodule->update = SM_UPDATE_NONE; > + else if (!strcmp(value, "checkout")) > + submodule->update = SM_UPDATE_CHECKOUT; > + else if (!strcmp(value, "rebase")) > + submodule->update = SM_UPDATE_REBASE; > + else if (!strcmp(value, "merge")) > + submodule->update = SM_UPDATE_MERGE; > + else if (!skip_prefix(value, "!", &submodule->update_command)) > + die(_("invalid value for %s"), var); > + } > } > > strbuf_release(&name); > diff --git a/submodule-config.h b/submodule-config.h > index 9061e4e..e3bd56e 100644 > --- a/submodule-config.h > +++ b/submodule-config.h > @@ -4,6 +4,15 @@ > #include "hashmap.h" > #include "strbuf.h" > > +enum submodule_update_type { > + SM_UPDATE_CHECKOUT, > + SM_UPDATE_REBASE, > + SM_UPDATE_MERGE, > + SM_UPDATE_NONE, > + SM_UPDATE_COMMAND, > + SM_UPDATE_UNSPECIFIED > +}; > + > /* > * Submodule entry containing the information about a certain submodule > * in a certain revision. > @@ -14,6 +23,8 @@ struct submodule { > const char *url; > int fetch_recurse; > const char *ignore; > + enum submodule_update_type update; > + const char *update_command; > /* the sha1 blob id of the responsible .gitmodules file */ > unsigned char gitmodules_sha1[20]; > }; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html