@@ -47,6 +47,8 @@ sub usage {
47
47
--compose-encoding <str> * Encoding to assume for introduction.
48
48
--8bit-encoding <str> * Encoding to assume 8bit mails if undeclared
49
49
--transfer-encoding <str> * Transfer encoding to use (quoted-printable, 8bit, base64)
50
+ --[no-]mailmap * Use mailmap file to map all email addresses to canonical
51
+ real names and email addresses.
50
52
51
53
Sending:
52
54
--envelope-sender <str> * Email envelope sender.
@@ -278,12 +280,14 @@ sub do_edit {
278
280
my ($auto_8bit_encoding );
279
281
my ($compose_encoding );
280
282
my ($sendmail_cmd );
283
+ my ($mailmap_file , $mailmap_blob );
281
284
# Variables with corresponding config settings & hardcoded defaults
282
285
my ($debug_net_smtp ) = 0; # Net::SMTP, see send_message()
283
286
my $thread = 1;
284
287
my $chain_reply_to = 0;
285
288
my $use_xmailer = 1;
286
289
my $validate = 1;
290
+ my $mailmap = 0;
287
291
my $target_xfer_encoding = ' auto' ;
288
292
my $forbid_sendmail_variables = 1;
289
293
@@ -300,6 +304,7 @@ sub do_edit {
300
304
" annotate" => \$annotate ,
301
305
" xmailer" => \$use_xmailer ,
302
306
" forbidsendmailvariables" => \$forbid_sendmail_variables ,
307
+ " mailmap" => \$mailmap ,
303
308
);
304
309
305
310
my %config_settings = (
@@ -333,6 +338,8 @@ sub do_edit {
333
338
my %config_path_settings = (
334
339
" aliasesfile" => \@alias_files ,
335
340
" smtpsslcertpath" => \$smtp_ssl_cert_path ,
341
+ " mailmap.file" => \$mailmap_file ,
342
+ " mailmap.blob" => \$mailmap_blob ,
336
343
);
337
344
338
345
# Handle Uncouth Termination
@@ -533,6 +540,8 @@ sub config_regexp {
533
540
" thread!" => \$thread ,
534
541
" validate!" => \$validate ,
535
542
" transfer-encoding=s" => \$target_xfer_encoding ,
543
+ " mailmap!" => \$mailmap ,
544
+ " use-mailmap!" => \$mailmap ,
536
545
" format-patch!" => \$format_patch ,
537
546
" 8bit-encoding=s" => \$auto_8bit_encoding ,
538
547
" compose-encoding=s" => \$compose_encoding ,
@@ -1104,6 +1113,16 @@ sub expand_one_alias {
1104
1113
our ($message_id, %mail, $subject, $in_reply_to, $references, $message,
1105
1114
$needs_confirm, $message_num, $ask_default);
1106
1115
1116
+ sub mailmap_address_list {
1117
+ return @_ unless @_ and $mailmap;
1118
+ my @options = ();
1119
+ push(@options, "--mailmap-file=$mailmap_file") if $mailmap_file;
1120
+ push(@options, "--mailmap-blob=$mailmap_blob") if $mailmap_blob;
1121
+ my @addr_list = Git::command(' check-mailmap' , @options, @_);
1122
+ s/^<(.*)>$/$1/ for @addr_list;
1123
+ return @addr_list;
1124
+ }
1125
+
1107
1126
sub extract_valid_address {
1108
1127
my $address = shift;
1109
1128
my $local_part_regexp = qr/[^<>"\s@]+/;
@@ -1313,6 +1332,7 @@ sub process_address_list {
1313
1332
@addr_list = expand_aliases(@addr_list );
1314
1333
@addr_list = sanitize_address_list(@addr_list );
1315
1334
@addr_list = validate_address_list(@addr_list );
1335
+ @addr_list = mailmap_address_list(@addr_list );
1316
1336
return @addr_list ;
1317
1337
}
1318
1338
0 commit comments