Merge branch 'lh/send-email-hide-x-mailer'
authorJunio C Hamano <gitster@pobox.com>
Wed, 7 Jan 2015 21:07:27 +0000 (13:07 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 7 Jan 2015 21:07:27 +0000 (13:07 -0800)
"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

Documentation/config.txt
Documentation/git-send-email.txt
git-send-email.perl
t/t9001-send-email.sh
index 6862e3e30155b7139c960ce2f42f5fba96f11886..cc887b1279cb04c33cc2e67c373c6ed61daff520 100644 (file)
@@ -2329,6 +2329,7 @@ sendemail.smtpuser::
 sendemail.thread::
 sendemail.transferencoding::
 sendemail.validate::
+sendemail.xmailer::
        See linkgit:git-send-email[1] for description.
 
 sendemail.signedoffcc::
index a9efa5c2ec18776e12c5bdbb250df5b8e0f41581..e04849e3961257500f86441611e738e9b4d0f330 100644 (file)
@@ -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
 ~~~~~~~
index 58c8bc2a59fa0eac8d8f97ca219417183d3725d5..3092ab356c765cd593d2a988d020665c8b626ea1 100755 (executable)
@@ -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.
@@ -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;
 
@@ -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 = (
@@ -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;
@@ -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";
index a8773bdf379ad858b252be8045b42cec99af546b..af6a3e8904ab1d953b359707de1e0c9a09b3ce1f 100755 (executable)
@@ -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