diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-09-06 19:38:49 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-09-06 19:38:49 +0200 |
commit | 6dcb2db0fa20cbad961ebdc8414ce4f9246d8c2b (patch) | |
tree | 08956d99dddb4a1ac396bfa901d670ab4cd22291 /git-send-email.perl | |
parent | The twelfth batch (diff) | |
parent | send-email: add mailmap support via sendemail.mailmap and --mailmap (diff) | |
download | git-6dcb2db0fa20cbad961ebdc8414ce4f9246d8c2b.tar.xz git-6dcb2db0fa20cbad961ebdc8414ce4f9246d8c2b.zip |
Merge branch 'jk/send-email-mailmap'
"git send-email" learned "--mailmap" option to allow rewriting the
recipient addresses.
* jk/send-email-mailmap:
send-email: add mailmap support via sendemail.mailmap and --mailmap
check-mailmap: add options for additional mailmap sources
check-mailmap: accept "user@host" contacts
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-x | git-send-email.perl | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index cdcee1d0cf..c835d4c11a 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -47,6 +47,8 @@ git send-email --translate-aliases --compose-encoding <str> * Encoding to assume for introduction. --8bit-encoding <str> * Encoding to assume 8bit mails if undeclared --transfer-encoding <str> * Transfer encoding to use (quoted-printable, 8bit, base64) + --[no-]mailmap * Use mailmap file to map all email addresses to canonical + real names and email addresses. Sending: --envelope-sender <str> * Email envelope sender. @@ -278,12 +280,14 @@ my (@suppress_cc); my ($auto_8bit_encoding); my ($compose_encoding); my ($sendmail_cmd); +my ($mailmap_file, $mailmap_blob); # Variables with corresponding config settings & hardcoded defaults my ($debug_net_smtp) = 0; # Net::SMTP, see send_message() my $thread = 1; my $chain_reply_to = 0; my $use_xmailer = 1; my $validate = 1; +my $mailmap = 0; my $target_xfer_encoding = 'auto'; my $forbid_sendmail_variables = 1; @@ -300,6 +304,7 @@ my %config_bool_settings = ( "annotate" => \$annotate, "xmailer" => \$use_xmailer, "forbidsendmailvariables" => \$forbid_sendmail_variables, + "mailmap" => \$mailmap, ); my %config_settings = ( @@ -333,6 +338,8 @@ my %config_settings = ( my %config_path_settings = ( "aliasesfile" => \@alias_files, "smtpsslcertpath" => \$smtp_ssl_cert_path, + "mailmap.file" => \$mailmap_file, + "mailmap.blob" => \$mailmap_blob, ); # Handle Uncouth Termination @@ -533,6 +540,8 @@ my %options = ( "thread!" => \$thread, "validate!" => \$validate, "transfer-encoding=s" => \$target_xfer_encoding, + "mailmap!" => \$mailmap, + "use-mailmap!" => \$mailmap, "format-patch!" => \$format_patch, "8bit-encoding=s" => \$auto_8bit_encoding, "compose-encoding=s" => \$compose_encoding, @@ -1104,6 +1113,16 @@ if ($compose && $compose > 0) { our ($message_id, %mail, $subject, $in_reply_to, $references, $message, $needs_confirm, $message_num, $ask_default); +sub mailmap_address_list { + return @_ unless @_ and $mailmap; + my @options = (); + push(@options, "--mailmap-file=$mailmap_file") if $mailmap_file; + push(@options, "--mailmap-blob=$mailmap_blob") if $mailmap_blob; + my @addr_list = Git::command('check-mailmap', @options, @_); + s/^<(.*)>$/$1/ for @addr_list; + return @addr_list; +} + sub extract_valid_address { my $address = shift; my $local_part_regexp = qr/[^<>"\s@]+/; @@ -1313,6 +1332,7 @@ sub process_address_list { @addr_list = expand_aliases(@addr_list); @addr_list = sanitize_address_list(@addr_list); @addr_list = validate_address_list(@addr_list); + @addr_list = mailmap_address_list(@addr_list); return @addr_list; } |