log: add log.mailmap configuration option

Teach "log.mailmap" configuration variable to turn "--use-mailmap"
option on to "git log", "git show" and "git whatchanged".

The "--no-use-mailmap" option from the command line can countermand
the setting.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Antoine Pelisse 2013-01-05 22:26:46 +01:00 committed by Junio C Hamano
parent d72fbe8111
commit e6bb5f78fb
3 changed files with 35 additions and 0 deletions

View File

@ -1509,6 +1509,10 @@ log.showroot::
Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
normally hide the root commit will now show it. True by default. normally hide the root commit will now show it. True by default.
log.mailmap::
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1] assume `--use-mailmap`.
mailmap.file:: mailmap.file::
The location of an augmenting mailmap file. The default The location of an augmenting mailmap file. The default
mailmap, located in the root of the repository, is loaded mailmap, located in the root of the repository, is loaded

View File

@ -31,6 +31,7 @@ static int default_abbrev_commit;
static int default_show_root = 1; static int default_show_root = 1;
static int decoration_style; static int decoration_style;
static int decoration_given; static int decoration_given;
static int use_mailmap_config;
static const char *fmt_patch_subject_prefix = "PATCH"; static const char *fmt_patch_subject_prefix = "PATCH";
static const char *fmt_pretty; static const char *fmt_pretty;
@ -106,6 +107,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
OPT_END() OPT_END()
}; };
mailmap = use_mailmap_config;
argc = parse_options(argc, argv, prefix, argc = parse_options(argc, argv, prefix,
builtin_log_options, builtin_log_usage, builtin_log_options, builtin_log_usage,
PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN | PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN |
@ -358,6 +360,11 @@ static int git_log_config(const char *var, const char *value, void *cb)
} }
if (!prefixcmp(var, "color.decorate.")) if (!prefixcmp(var, "color.decorate."))
return parse_decorate_color_config(var, 15, value); return parse_decorate_color_config(var, 15, value);
if (!strcmp(var, "log.mailmap")) {
use_mailmap_config = git_config_bool(var, value);
return 0;
}
if (grep_config(var, value, cb) < 0) if (grep_config(var, value, cb) < 0)
return -1; return -1;
return git_diff_ui_config(var, value, cb); return git_diff_ui_config(var, value, cb);

View File

@ -254,6 +254,21 @@ test_expect_success 'Log output with --use-mailmap' '
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<\EOF
Author: CTO <cto@company.xx>
Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx>
Author: Other Author <other@author.xx>
Author: Other Author <other@author.xx>
Author: Some Dude <some@dude.xx>
Author: A U Thor <author@example.com>
EOF
test_expect_success 'Log output with log.mailmap' '
git -c log.mailmap=True log | grep Author >actual &&
test_cmp expect actual
'
cat >expect <<\EOF cat >expect <<\EOF
Author: Santa Claus <santa.claus@northpole.xx> Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx> Author: Santa Claus <santa.claus@northpole.xx>
@ -263,6 +278,15 @@ test_expect_success 'Grep author with --use-mailmap' '
git log --use-mailmap --author Santa | grep Author >actual && git log --use-mailmap --author Santa | grep Author >actual &&
test_cmp expect actual test_cmp expect actual
' '
cat >expect <<\EOF
Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx>
EOF
test_expect_success 'Grep author with log.mailmap' '
git -c log.mailmap=True log --author Santa | grep Author >actual &&
test_cmp expect actual
'
>expect >expect