From: Jonatan Holmgren Date: Tue, 10 Feb 2026 18:31:09 GMT Subject: [PATCH v2 1/2] help: use list_aliases() for alias listing and lookup Message-ID: <20260210183110.1151072-2-jonatan@jontes.page> In-Reply-To: <20260210183110.1151072-1-jonatan@jontes.page> help.c has its own get_alias() config callback that duplicates the parsing logic in alias.c. Consolidate by teaching list_aliases() to also store the alias values (via the string_list util field), then use it in list_all_cmds_help_aliases() instead of the private callback. While at it, switch git_unknown_cmd_config() from skip_prefix() to parse_config_key() for alias parsing, which properly handles the config key structure and prepares for multi-level alias config keys in a subsequent commit. No functional change intended. Signed-off-by: Jonatan Holmgren --- alias.c | 4 +++- help.c | 26 ++++++++------------------ 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/alias.c b/alias.c index 1a1a141a0a..c66a6095bb 100644 --- a/alias.c +++ b/alias.c @@ -29,7 +29,9 @@ static int config_alias_cb(const char *key, const char *value, key, value); } } else if (data->list) { - string_list_append(data->list, p); + if (value) + string_list_append(data->list, p)->util = + xstrdup(value); } return 0; diff --git a/help.c b/help.c index fefd811f7a..a450d57987 100644 --- a/help.c +++ b/help.c @@ -20,6 +20,7 @@ #include "prompt.h" #include "fsmonitor-ipc.h" #include "repository.h" +#include "alias.h" #ifndef NO_CURL #include "git-curl-compat.h" /* For LIBCURL_VERSION only */ @@ -468,20 +469,6 @@ void list_developer_interfaces_help(void) putchar('\n'); } -static int get_alias(const char *var, const char *value, - const struct config_context *ctx UNUSED, void *data) -{ - struct string_list *list = data; - - if (skip_prefix(var, "alias.", &var)) { - if (!value) - return config_error_nonbool(var); - string_list_append(list, var)->util = xstrdup(value); - } - - return 0; -} - static void list_all_cmds_help_external_commands(void) { struct string_list others = STRING_LIST_INIT_DUP; @@ -501,7 +488,7 @@ static void list_all_cmds_help_aliases(int longest) struct cmdname_help *aliases; int i; - repo_config(the_repository, get_alias, &alias_list); + list_aliases(&alias_list); string_list_sort(&alias_list); for (i = 0; i < alias_list.nr; i++) { @@ -586,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); @@ -601,8 +589,10 @@ 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