send-email: add --no-cc, --no-to, and --no-bcc
There's no way to override the sendemail.to, sendemail.cc, and sendemail.bcc config settings. Add options allowing the user to tell git to ignore the config settings and take whatever is on the command line. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									c42600346b
								
							
						
					
					
						commit
						f434c083a0
					
				|  | @ -47,9 +47,9 @@ git send-email [options] <file | directory | rev-list options > | ||||||
|  |  | ||||||
|   Composing: |   Composing: | ||||||
|     --from                  <str>  * Email From: |     --from                  <str>  * Email From: | ||||||
|     --to                    <str>  * Email To: |     --[no-]to               <str>  * Email To: | ||||||
|     --cc                    <str>  * Email Cc: |     --[no-]cc               <str>  * Email Cc: | ||||||
|     --bcc                   <str>  * Email Bcc: |     --[no-]bcc              <str>  * Email Bcc: | ||||||
|     --subject               <str>  * Email "Subject:" |     --subject               <str>  * Email "Subject:" | ||||||
|     --in-reply-to           <str>  * Email "In-Reply-To:" |     --in-reply-to           <str>  * Email "In-Reply-To:" | ||||||
|     --annotate                     * Review each patch that will be sent in an editor. |     --annotate                     * Review each patch that will be sent in an editor. | ||||||
|  | @ -135,7 +135,7 @@ sub unique_email_list(@); | ||||||
| sub cleanup_compose_files(); | sub cleanup_compose_files(); | ||||||
|  |  | ||||||
| # Variables we fill in automatically, or via prompting: | # Variables we fill in automatically, or via prompting: | ||||||
| my (@to,@cc,@initial_cc,@bcclist,@xh, | my (@to,$no_to,@cc,$no_cc,@initial_cc,@bcclist,$no_bcc,@xh, | ||||||
| 	$initial_reply_to,$initial_subject,@files, | 	$initial_reply_to,$initial_subject,@files, | ||||||
| 	$author,$sender,$smtp_authpass,$annotate,$compose,$time); | 	$author,$sender,$smtp_authpass,$annotate,$compose,$time); | ||||||
|  |  | ||||||
|  | @ -261,8 +261,11 @@ my $rc = GetOptions("sender|from=s" => \$sender, | ||||||
|                     "in-reply-to=s" => \$initial_reply_to, |                     "in-reply-to=s" => \$initial_reply_to, | ||||||
| 		    "subject=s" => \$initial_subject, | 		    "subject=s" => \$initial_subject, | ||||||
| 		    "to=s" => \@to, | 		    "to=s" => \@to, | ||||||
|  | 		    "no-to" => \$no_to, | ||||||
| 		    "cc=s" => \@initial_cc, | 		    "cc=s" => \@initial_cc, | ||||||
|  | 		    "no-cc" => \$no_cc, | ||||||
| 		    "bcc=s" => \@bcclist, | 		    "bcc=s" => \@bcclist, | ||||||
|  | 		    "no-bcc" => \$no_bcc, | ||||||
| 		    "chain-reply-to!" => \$chain_reply_to, | 		    "chain-reply-to!" => \$chain_reply_to, | ||||||
| 		    "smtp-server=s" => \$smtp_server, | 		    "smtp-server=s" => \$smtp_server, | ||||||
| 		    "smtp-server-port=s" => \$smtp_server_port, | 		    "smtp-server-port=s" => \$smtp_server_port, | ||||||
|  | @ -305,6 +308,9 @@ sub read_config { | ||||||
|  |  | ||||||
| 	foreach my $setting (keys %config_settings) { | 	foreach my $setting (keys %config_settings) { | ||||||
| 		my $target = $config_settings{$setting}; | 		my $target = $config_settings{$setting}; | ||||||
|  | 		next if $setting eq "to" and defined $no_to; | ||||||
|  | 		next if $setting eq "cc" and defined $no_cc; | ||||||
|  | 		next if $setting eq "bcc" and defined $no_bcc; | ||||||
| 		if (ref($target) eq "ARRAY") { | 		if (ref($target) eq "ARRAY") { | ||||||
| 			unless (@$target) { | 			unless (@$target) { | ||||||
| 				my @values = Git::config(@repo, "$prefix.$setting"); | 				my @values = Git::config(@repo, "$prefix.$setting"); | ||||||
|  |  | ||||||
|  | @ -852,4 +852,70 @@ test_expect_success 'no warning with sendemail.chainreplyto = true' ' | ||||||
| 	! grep "no-chain-reply-to" errors | 	! grep "no-chain-reply-to" errors | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'sendemail.to works' ' | ||||||
|  | 	git config --replace-all sendemail.to "Somebody <somebody@ex.com>" && | ||||||
|  | 	git send-email \ | ||||||
|  | 		--dry-run \ | ||||||
|  | 		--from="Example <nobody@example.com>" \ | ||||||
|  | 		$patches $patches >stdout && | ||||||
|  | 	grep "To: Somebody <somebody@ex.com>" stdout | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success '--no-to overrides sendemail.to' ' | ||||||
|  | 	git send-email \ | ||||||
|  | 		--dry-run \ | ||||||
|  | 		--from="Example <nobody@example.com>" \ | ||||||
|  | 		--no-to \ | ||||||
|  | 		--to=nobody@example.com \ | ||||||
|  | 		$patches $patches >stdout && | ||||||
|  | 	grep "To: nobody@example.com" stdout && | ||||||
|  | 	! grep "To: Somebody <somebody@ex.com>" stdout | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'sendemail.cc works' ' | ||||||
|  | 	git config --replace-all sendemail.cc "Somebody <somebody@ex.com>" && | ||||||
|  | 	git send-email \ | ||||||
|  | 		--dry-run \ | ||||||
|  | 		--from="Example <nobody@example.com>" \ | ||||||
|  | 		--to=nobody@example.com \ | ||||||
|  | 		$patches $patches >stdout && | ||||||
|  | 	grep "Cc: Somebody <somebody@ex.com>" stdout | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success '--no-cc overrides sendemail.cc' ' | ||||||
|  | 	git send-email \ | ||||||
|  | 		--dry-run \ | ||||||
|  | 		--from="Example <nobody@example.com>" \ | ||||||
|  | 		--no-cc \ | ||||||
|  | 		--cc=bodies@example.com \ | ||||||
|  | 		--to=nobody@example.com \ | ||||||
|  | 		$patches $patches >stdout && | ||||||
|  | 	grep "Cc: bodies@example.com" stdout && | ||||||
|  | 	! grep "Cc: Somebody <somebody@ex.com>" stdout | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'sendemail.bcc works' ' | ||||||
|  | 	git config --replace-all sendemail.bcc "Other <other@ex.com>" && | ||||||
|  | 	git send-email \ | ||||||
|  | 		--dry-run \ | ||||||
|  | 		--from="Example <nobody@example.com>" \ | ||||||
|  | 		--to=nobody@example.com \ | ||||||
|  | 		--smtp-server relay.example.com \ | ||||||
|  | 		$patches $patches >stdout && | ||||||
|  | 	grep "RCPT TO:<other@ex.com>" stdout | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success '--no-bcc overrides sendemail.bcc' ' | ||||||
|  | 	git send-email \ | ||||||
|  | 		--dry-run \ | ||||||
|  | 		--from="Example <nobody@example.com>" \ | ||||||
|  | 		--no-bcc \ | ||||||
|  | 		--bcc=bodies@example.com \ | ||||||
|  | 		--to=nobody@example.com \ | ||||||
|  | 		--smtp-server relay.example.com \ | ||||||
|  | 		$patches $patches >stdout && | ||||||
|  | 	grep "RCPT TO:<bodies@example.com>" stdout && | ||||||
|  | 	! grep "RCPT TO:<other@ex.com>" stdout | ||||||
|  | ' | ||||||
|  |  | ||||||
| test_done | test_done | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Stephen Boyd
						Stephen Boyd