]> git.ipfire.org Git - thirdparty/git.git/commitdiff
mailmap: drop global config variables
authorBurak Kaan Karaçay <bkkaracay@gmail.com>
Fri, 20 Feb 2026 06:04:42 +0000 (09:04 +0300)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Feb 2026 16:13:58 +0000 (08:13 -0800)
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>
environment.c
mailmap.c
mailmap.h

index 0026eb227487dd3cc3290d13f61a9d977682bac8..2764d8f4817c2acaf507994efef5bb28b29be330 100644 (file)
@@ -647,22 +647,6 @@ static int git_default_push_config(const char *var, const char *value)
        return 0;
 }
 
-static int git_default_mailmap_config(const char *var, const char *value)
-{
-       if (!strcmp(var, "mailmap.file")) {
-               FREE_AND_NULL(git_mailmap_file);
-               return git_config_pathname(&git_mailmap_file, var, value);
-       }
-
-       if (!strcmp(var, "mailmap.blob")) {
-               FREE_AND_NULL(git_mailmap_blob);
-               return git_config_string(&git_mailmap_blob, var, value);
-       }
-
-       /* Add other config variables here and to Documentation/config.adoc. */
-       return 0;
-}
-
 static int git_default_attr_config(const char *var, const char *value)
 {
        if (!strcmp(var, "attr.tree")) {
@@ -697,9 +681,6 @@ int git_default_config(const char *var, const char *value,
        if (starts_with(var, "push."))
                return git_default_push_config(var, value);
 
-       if (starts_with(var, "mailmap."))
-               return git_default_mailmap_config(var, value);
-
        if (starts_with(var, "attr."))
                return git_default_attr_config(var, value);
 
index cf70956675c066ab6a9f8033ae21d81eedf617ca..3b2691781d8ff1131bf6d2a66d15ff6c3d3ce709 100644 (file)
--- 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;
 }
 
index fda329d7157e4ec9e2f68d0c7fca4f66674c83f4..6866cb6f1d6c6f049d6979ca3ab02055fd5c40e8 100644 (file)
--- a/mailmap.h
+++ b/mailmap.h
@@ -4,9 +4,6 @@
 struct repository;
 struct string_list;
 
-extern char *git_mailmap_file;
-extern char *git_mailmap_blob;
-
 /* Flags for read_mailmap_file() */
 #define MAILMAP_NOFOLLOW (1<<0)