aboutsummaryrefslogtreecommitdiff
path: root/mailmap.c
diff options
context:
space:
mode:
authorBurak Kaan Karaçay <bkkaracay@gmail.com>2026-02-20 09:04:42 +0300
committerJunio C Hamano <gitster@pobox.com>2026-02-20 08:13:58 -0800
commit6aea51bc3bf3c5318b97b5bddc405c29f1b23e8e (patch)
tree782c9682b2cc2ed1561871888a8129d4507ea612 /mailmap.c
parent999b09348d6302d018165b4b3d289d4579d08e9e (diff)
downloadgit-6aea51bc3bf3c5318b97b5bddc405c29f1b23e8e.tar.xz
mailmap: drop global config variables
The 'mailmap.file' and 'mailmap.blob' configurations are currently parsed and stored in the global variables 'git_mailmap_file' and 'git_mailmap_blob'. Since these values are typically only needed once when initializing a mailmap, there is no need to keep them as global state throughout the lifetime of the Git process. To reduce global state, remove these global variables and instead use 'repo_config_get_*' functions to read the configuration on demand. Signed-off-by: Burak Kaan Karaçay <bkkaracay@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'mailmap.c')
-rw-r--r--mailmap.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/mailmap.c b/mailmap.c
index cf70956675..3b2691781d 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -7,9 +7,7 @@
#include "object-name.h"
#include "odb.h"
#include "setup.h"
-
-char *git_mailmap_file;
-char *git_mailmap_blob;
+#include "config.h"
struct mailmap_info {
char *name;
@@ -213,20 +211,29 @@ int read_mailmap_blob(struct repository *repo, struct string_list *map,
int read_mailmap(struct repository *repo, struct string_list *map)
{
int err = 0;
+ char *mailmap_file = NULL, *mailmap_blob = NULL;
+
+ repo_config_get_pathname(repo, "mailmap.file", &mailmap_file);
+ repo_config_get_string(repo, "mailmap.blob", &mailmap_blob);
map->strdup_strings = 1;
map->cmp = namemap_cmp;
- if (!git_mailmap_blob && is_bare_repository())
- git_mailmap_blob = xstrdup("HEAD:.mailmap");
+ if (!mailmap_blob && is_bare_repository())
+ mailmap_blob = xstrdup("HEAD:.mailmap");
if (!startup_info->have_repository || !is_bare_repository())
err |= read_mailmap_file(map, ".mailmap",
startup_info->have_repository ?
MAILMAP_NOFOLLOW : 0);
if (startup_info->have_repository)
- err |= read_mailmap_blob(repo, map, git_mailmap_blob);
- err |= read_mailmap_file(map, git_mailmap_file, 0);
+ err |= read_mailmap_blob(repo, map, mailmap_blob);
+
+ err |= read_mailmap_file(map, mailmap_file, 0);
+
+ free(mailmap_file);
+ free(mailmap_blob);
+
return err;
}