Subject: Re: [ISSUE] git send-email sends wrong patches and non-provided CC (probably bug)

From: Junio C Hamano <[email-masked]>
Date: Fri, 07 Mar 2008 21:14:51 -0800

"Imran M Yousuf" <[email-masked]> writes:

> On Thu, Mar 6, 2008 at 4:19 PM, Junio C Hamano <[email-masked]> wrote:
>> "Imran M Yousuf" <[email-masked]> writes:
>>
>>  > 1. git send-email sends CC to gitster though his email is not mentioned.
>>
>>  Check your config first.
>
> Can someone help me where I can find it in the config? because I
> surely did not make any change to config of GIT project. I would be
> grateful for the help.

In $HOME/.gitconfig and $GIT_DIR/config, sendemail.{to,cccmd,bcc} .

Running "git send-email --dry-run $your_command_line_args $files"
may tell you where the recipients list are picked up from.  IIRC, the
command picks up addresses on Signed-off-by: lines too, which needs to be
explicitly squelched with --suppress-cc=all and/or friends.

One irritating pitfall is that --suppress-cc=<cccmd,cc,self,author,sob>
takes lower precedence than others; especially, even the command line
--suppress-cc=all is countermanded by configured sendemail.suppressfrom
and sendemail.signedoffcc.

Even if we ignore this "the command line should trump configured values"
irritation, I think there is a bug here.

    # If explicit old-style ones are specified, they trump --suppress-cc.
    $suppress_cc{'self'} = $suppress_from if defined $suppress_from;
    $suppress_cc{'sob'} = $signed_off_cc if defined $signed_off_cc;

$signed_off_cc asks for cc, so I think the second line should invert its
logic.

-- >8 --
send-email: --no-signed-off-cc should suppress 'sob' cc

The logic to countermand suppression of Cc to the signers with a more
explicit --signed-off-by option done in 6564828 (git-send-email:
Generalize auto-cc recipient mechanism) suffers from a double-negation
error.

A --signed-off-cc option, when false, should actively suppress CC: to be
generated out of S-o-b lines, and it should refrain from suppressing when
it is true.

Signed-off-by: Junio C Hamano <[email-masked]>
---
 git-send-email.perl |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index 29b1105..b3bd922 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -317,7 +317,7 @@ if ($suppress_cc{'all'}) {
 
 # If explicit old-style ones are specified, they trump --suppress-cc.
 $suppress_cc{'self'} = $suppress_from if defined $suppress_from;
-$suppress_cc{'sob'} = $signed_off_cc if defined $signed_off_cc;
+$suppress_cc{'sob'} = !$signed_off_cc if defined $signed_off_cc;
 
 # Debugging, print out the suppressions.
 if (0) {