From: Junio C Hamano Date: Wed, 11 Feb 2026 21:53:45 GMT Subject: Re: [PATCH v4 2/3] alias: prepare for subsection aliases Message-ID: In-Reply-To: <20260211211810.278806-3-jonatan@jontes.page> Jonatan Holmgren writes: > 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.." as > defining an alias ".". With this change, > alias.. entries are silently ignored (unless > 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 > --- > help.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) Very well explained. > > diff --git a/help.c b/help.c > index 0bdb7ca10f..eccd0c22f8 100644 > --- a/help.c > +++ b/help.c > @@ -573,7 +573,8 @@ static int git_unknown_cmd_config(const char *var, const char *value, > 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); > @@ -588,8 +589,11 @@ static int git_unknown_cmd_config(const char *var, const char *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; > }