[PATCH v6 2/4] alias: prepare for subsection aliases
- From
Jonatan Holmgren <jonatan@jontes.page>
- Date
- Feb 18, 2026, 14:52 UTC
- Message-ID
- <20260218145214.581460-3-jonatan@jontes.page>
- In-Reply-To
- <20260218145214.581460-1-jonatan@jontes.page>
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> --- help.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/help.c b/help.c index 5b1b320d02..691af219bf 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; }
-- 2.53.0.122.g591c997fb5.dirty