path: root/mailmap.c
diff options
authorJeff King <>2012-12-13 13:04:47 (GMT)
committerJunio C Hamano <>2012-12-13 18:22:13 (GMT)
commit8c473cecfd8835c2bdf34b323e1b2de620099c04 (patch)
treed48b73f9b935b99d0cd2c1ce17cb76948ead8f46 /mailmap.c
parentd5422b0c0ba9948166115f1b178c34ee65fc3057 (diff)
mailmap: default mailmap.blob in bare repositories
The motivation for mailmap.blob is to let users of bare repositories use the mailmap feature, as they would not have a checkout containing the .mailmap file. We can make it even easier for them by just looking in HEAD:.mailmap by default. We can't know for sure that this is where they would keep a mailmap, of course, but it is the best guess (and it matches the non-bare behavior, which reads from HEAD:.mailmap in the working tree). If it's missing, git will silently ignore the setting. We do not do the same magic in the non-bare case, because: 1. In the common case, HEAD:.mailmap will be the same as the .mailmap in the working tree, which is a no-op. 2. In the uncommon case, the user has modified .mailmap but not yet committed it, and would expect the working tree version to take precedence. Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'mailmap.c')
1 files changed, 5 insertions, 0 deletions
diff --git a/mailmap.c b/mailmap.c
index 5ffe48a..b16542f 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -233,7 +233,12 @@ static int read_mailmap_blob(struct string_list *map,
int read_mailmap(struct string_list *map, char **repo_abbrev)
int err = 0;
map->strdup_strings = 1;
+ if (!git_mailmap_blob && is_bare_repository())
+ git_mailmap_blob = "HEAD:.mailmap";
err |= read_mailmap_file(map, ".mailmap", repo_abbrev);
err |= read_mailmap_blob(map, git_mailmap_blob, repo_abbrev);
err |= read_mailmap_file(map, git_mailmap_file, repo_abbrev);