Skip to content

Commit

Permalink
Merge branch 'lh/send-email-hide-x-mailer'
Browse files Browse the repository at this point in the history
"git send-email" normally identifies itself via X-Mailer: header
in the message it sends out.  A new command line flag allows the
user to squelch the header.

* lh/send-email-hide-x-mailer:
  test/send-email: --[no-]xmailer tests
  send-email: add --[no-]xmailer option
  • Loading branch information
Junio C Hamano committed Jan 7, 2015
2 parents 948e814 + 2cf770f commit 5095fa6
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 3 deletions.
1 change: 1 addition & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2329,6 +2329,7 @@ sendemail.smtpuser::
sendemail.thread::
sendemail.transferencoding::
sendemail.validate::
sendemail.xmailer::
See linkgit:git-send-email[1] for description.

sendemail.signedoffcc::
Expand Down
5 changes: 5 additions & 0 deletions Documentation/git-send-email.txt
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@ Note that no attempts whatsoever are made to validate the encoding.
configuration value; if that is unspecified, git will use 8bit and not
add a Content-Transfer-Encoding header.

--xmailer::
--no-xmailer::
Add (or prevent adding) the "X-Mailer:" header. By default,
the header is added, but it can be turned off by setting the
`sendemail.xmailer` configuration variable to `false`.

Sending
~~~~~~~
Expand Down
11 changes: 8 additions & 3 deletions git-send-email.perl
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ sub usage {
--[no-]bcc <str> * Email Bcc:
--subject <str> * Email "Subject:"
--in-reply-to <str> * Email "In-Reply-To:"
--[no-]xmailer * Add "X-Mailer:" header (default).
--[no-]annotate * Review each patch that will be sent in an editor.
--compose * Open an editor for introduction.
--compose-encoding <str> * Encoding to assume for introduction.
Expand Down Expand Up @@ -154,7 +155,7 @@ sub format_2822_time {
# Variables we fill in automatically, or via prompting:
my (@to,$no_to,@initial_to,@cc,$no_cc,@initial_cc,@bcclist,$no_bcc,@xh,
$initial_reply_to,$initial_subject,@files,
$author,$sender,$smtp_authpass,$annotate,$compose,$time);
$author,$sender,$smtp_authpass,$annotate,$use_xmailer,$compose,$time);

my $envelope_sender;

Expand Down Expand Up @@ -226,7 +227,8 @@ sub do_edit {
"signedoffcc" => [\$signed_off_by_cc, undef], # Deprecated
"validate" => [\$validate, 1],
"multiedit" => [\$multiedit, undef],
"annotate" => [\$annotate, undef]
"annotate" => [\$annotate, undef],
"xmailer" => [\$use_xmailer, 1]
);

my %config_settings = (
Expand Down Expand Up @@ -327,6 +329,7 @@ sub signal_handler {
"8bit-encoding=s" => \$auto_8bit_encoding,
"compose-encoding=s" => \$compose_encoding,
"force" => \$force,
"xmailer!" => \$use_xmailer,
);

usage() if $help;
Expand Down Expand Up @@ -1181,8 +1184,10 @@ sub send_message {
Subject: $subject
Date: $date
Message-Id: $message_id
X-Mailer: git-send-email $gitversion
";
if ($use_xmailer) {
$header .= "X-Mailer: git-send-email $gitversion\n";
}
if ($reply_to) {

$header .= "In-Reply-To: $reply_to\n";
Expand Down
33 changes: 33 additions & 0 deletions t/t9001-send-email.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1564,4 +1564,37 @@ test_expect_success $PREREQ 'sendemail.aliasfile=~/.mailrc' '
grep "^!someone@example\.org!$" commandline1
'

do_xmailer_test () {
expected=$1 params=$2 &&
git format-patch -1 &&
git send-email \
--from="Example <nobody@example.com>" \
--to=someone@example.com \
--smtp-server="$(pwd)/fake.sendmail" \
$params \
0001-*.patch \
2>errors >out &&
{ grep '^X-Mailer:' out || :; } >mailer &&
test_line_count = $expected mailer
}

test_expect_success $PREREQ '--[no-]xmailer without any configuration' '
do_xmailer_test 1 "--xmailer" &&
do_xmailer_test 0 "--no-xmailer"
'

test_expect_success $PREREQ '--[no-]xmailer with sendemail.xmailer=true' '
test_config sendemail.xmailer true &&
do_xmailer_test 1 "" &&
do_xmailer_test 0 "--no-xmailer" &&
do_xmailer_test 1 "--xmailer"
'

test_expect_success $PREREQ '--[no-]xmailer with sendemail.xmailer=false' '
test_config sendemail.xmailer false &&
do_xmailer_test 0 "" &&
do_xmailer_test 0 "--no-xmailer" &&
do_xmailer_test 1 "--xmailer"
'

test_done

0 comments on commit 5095fa6

Please sign in to comment.