Re: [PATCH 05/15] submodule-config: check if submodule a submodule is in a group
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 26, 2016, 22:58 UTC
- Message-ID
- <xmqq37q8c6zz.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <1461703833-10350-6-git-send-email-sbeller@google.com>
Stefan Beller <sbeller@google.com> writes:
Show 9 quoted lines
> diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c > index b6d4f27..23d7224 100644 > --- a/builtin/submodule--helper.c > +++ b/builtin/submodule--helper.c > @@ -814,6 +814,46 @@ static int update_clone(int argc, const char **argv, const char *prefix) > return 0; > } > > +int in_group(int argc, const char **argv, const char *prefix)
It is inconceivable that "submodule group" will be the only user of the concept whose name is "group". Please do not give such a generic name to a helper function that is specific to "submodule group" and make it global. Naming a file-scope static helper function as in_group() is perfectly fine; it is clear that such a function in submodule--helper.c is about submodule group.
Show 5 quoted lines
> + if (!group)
> + list = git_config_get_value_multi("submodule.defaultGroup");
> + else {
> + string_list_split(&actual_list, group, ',', -1);
> + list = &actual_list;Hmm, where did this syntax to use comma-separated things come from? Did I miss it in 02/15?
Show 33 quoted lines
> + if (sub->labels) {
> + struct string_list_item *item;
> + for_each_string_list_item(item, sub->labels) {
> + strbuf_reset(&sb);
> + strbuf_addf(&sb, "*%s", item->string);
> + if (string_list_has_string(group, sb.buf)) {
> + matched = 1;
> + break;
> + }
> + }
> + }
> + if (sub->path) {
> + /*
> + * NEEDSWORK: This currently works only for
> + * exact paths, but we want to enable
> + * inexact matches such wildcards.
> + */
> + strbuf_reset(&sb);
> + strbuf_addf(&sb, "./%s", sub->path);
> + if (string_list_has_string(group, sb.buf))
> + matched = 1;
> + }
> + if (sub->name) {
> + /*
> + * NEEDSWORK: Same as with path. Do we want to
> + * support wildcards or such?
> + */
> + strbuf_reset(&sb);
> + strbuf_addf(&sb, ":%s", sub->name);
> + if (string_list_has_string(group, sb.buf))
> + matched = 1;
> + }
> + strbuf_release(&sb);I see room for bikeshedding here, but the material to bikeshed around is not even documented yet ;-)
* a token prefixed with '*' is a label. * a token prefixed with './' is a path. * a token prefixed with ':' is a name.
Hopefully I will see some description like that in later patches. I'll read on.