aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonatan Holmgren <jonatan@jontes.page>2026-02-18 22:57:34 +0100
committerJunio C Hamano <gitster@pobox.com>2026-02-19 10:13:20 -0800
commit3f0cdfa87907096ed7c6caa33fbf360e0e19844c (patch)
tree5ac17d0142dc29ed0af1728149d229d04da9b372
parent67ad42147a7acc2af6074753ebd03d904476118f (diff)
downloadgit-3f0cdfa87907096ed7c6caa33fbf360e0e19844c.tar.xz
help: use list_aliases() for alias listing
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. This preserves the existing error checking for value-less alias definitions by checking in alias.c rather than help.c. No functional change intended. Signed-off-by: Jonatan Holmgren <jonatan@jontes.page> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--alias.c8
-rw-r--r--help.c17
-rwxr-xr-xt/t0014-alias.sh10
3 files changed, 19 insertions, 16 deletions
diff --git a/alias.c b/alias.c
index 1a1a141a0a..271acb9bf1 100644
--- a/alias.c
+++ b/alias.c
@@ -29,7 +29,13 @@ static int config_alias_cb(const char *key, const char *value,
key, value);
}
} else if (data->list) {
- string_list_append(data->list, p);
+ struct string_list_item *item;
+
+ if (!value)
+ return config_error_nonbool(key);
+
+ item = string_list_append(data->list, p);
+ item->util = xstrdup(value);
}
return 0;
diff --git a/help.c b/help.c
index 3c36d9c218..84b9e5efe4 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 */
@@ -469,20 +470,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;
@@ -502,7 +489,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++) {
diff --git a/t/t0014-alias.sh b/t/t0014-alias.sh
index 07a53e7366..a13d2be8ca 100755
--- a/t/t0014-alias.sh
+++ b/t/t0014-alias.sh
@@ -112,4 +112,14 @@ test_expect_success 'cannot alias-shadow a sample of regular builtins' '
done
'
+test_expect_success 'alias without value reports error' '
+ test_when_finished "git config --unset alias.noval" &&
+ cat >>.git/config <<-\EOF &&
+ [alias]
+ noval
+ EOF
+ test_must_fail git noval 2>error &&
+ test_grep "alias.noval" error
+'
+
test_done