Switch git_unknown_cmd_config() from skip_prefix() to
parse_config_key() for alias parsing. This properly handles the
three-level config key structure and prepares for the new
alias.*.command subsection syntax in the next commit.
This is a compatibility break: the alias configuration parser used
to be overly permissive and accepted "alias.<subsection>.<key>" as
defining an alias "<subsection>.<key>". With this change,
alias.<subsection>.<key> entries are silently ignored (unless <key>
is "command", which will be given meaning in the next commit).
This behavior was arguably a bug, since config subsections were never
intended to work this way for aliases, and aliases with dots in their
names have never been documented or intentionally supported.
Signed-off-by: Jonatan Holmgren <jonatan@jontes.page>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
void *cb)
{
struct help_unknown_cmd_config *cfg = cb;
- const char *p;
+ const char *subsection, *key;
+ size_t subsection_len;
if (!strcmp(var, "help.autocorrect")) {
int v = parse_autocorrect(value);
}
/* Also use aliases for command lookup */
- if (skip_prefix(var, "alias.", &p))
- add_cmdname(&cfg->aliases, p, strlen(p));
+ if (!parse_config_key(var, "alias", &subsection, &subsection_len,
+ &key)) {
+ if (!subsection)
+ add_cmdname(&cfg->aliases, key, strlen(key));
+ }
return 0;
}