[poky] [PATCH] scripts/send-pull-request: Use git send-mail instead of sendmail

Bruce Ashfield bruce.ashfield at gmail.com
Tue Dec 21 13:37:47 PST 2010


On Tue, Dec 21, 2010 at 4:32 PM, Khem Raj <raj.khem at gmail.com> wrote:
> On Tue, Dec 21, 2010 at 1:19 PM, Darren Hart <dvhart at linux.intel.com> wrote:
>> On 12/21/2010 01:39 AM, Khem Raj wrote:
>>>
>>> * usually git send-mail is setup by people using git
>>>   so use git send-mail to post patches for pull requests
>>>   There is how to setup git send-email
>>>   see section "Set up git"
>>>
>>> http://www.openembedded.org/index.php/How_to_submit_a_patch_to_OpenEmbedded
>>
>> I didn't use git-send-email for this script because of a few complications
>> with it. First, when using the --compose option, there is no way to pass it
>> a file for the cover-letter. Second, it doesn't scan the entire patch series
>> for recipients and will send each mail in the thread to different recipients
>> - including the cover letter, which I find simply obnoxious. These prevent
>> it from being used as a single command with a refspec for the range of
>> patches. If you aren't going to do this, then using it in a loop is
>> effectively the same as using sendmail. If you're using git-send-email, then
>> you already have local sendmail setup.
>
> No I dont. I use smtpserver with git send-email
>
>>
>> Other than using your local git mail aliases, I don't see any advantage to
>> using git-send-email.
>
> if using git then its easier for people to use git commands and I
> think git email setup
> is easier than setting up sendmail.
>
> If you're using the auto-harvest feature, you had to
>> dig up the proper email addresses anyway. It does however add a second
>> configuration step - the [sendemail] section. I do have this setup myself,
>> but enough people trip over just getting a local sendmail configuration
>> working that adding git sendemail to that just doesn't seem worth it to me.
>>
>> Is there an advantage to git sendemail that I am overlooking?
>
> I think git send-email sends the patches the expected way and one does not
> have to worry about chopping etc. that the script currently does.

I don't see this as a one vs the other sort of thing. I've been sending
patches to the lists using Darren's front end, but then using git send-email
to actually transmit the patches (since I don't have sendmail on all
my boxes).

So I'd suggest simply making the sending configurable, since clobbering
one with the other doesn't meet everyone's needs.

Cheers,

Bruce

>
>>
>> Thanks,
>>
>> Darren Hart
>>
>>>
>>> Signed-off-by: Khem Raj<raj.khem at gmail.com>
>>> ---
>>>  scripts/send-pull-request |   19 ++++++++-----------
>>>  1 files changed, 8 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/scripts/send-pull-request b/scripts/send-pull-request
>>> index 0576a5d..2f0b90d 100755
>>> --- a/scripts/send-pull-request
>>> +++ b/scripts/send-pull-request
>>> @@ -12,8 +12,8 @@ Usage: $(basename $0) [-h] [-a] [[-t email]...] -p
>>> pull-dir
>>>  EOM
>>>  }
>>>
>>> -# Collect To and CC addresses from the patch files if they exist
>>> -# $1: Which header to add the recipients to, "TO" or "CC"
>>> +# Collect To, From and CC addresses from the patch files if they exist
>>> +# $1: Which header to add the recipients to, "TO", "FROM" or "CC"
>>>  # $2: The regex to match and strip from the line with email addresses
>>>  harvest_recipients()
>>>  {
>>> @@ -27,6 +27,8 @@ harvest_recipients()
>>>                  if [ -z "$TO" ]; then TO=$EMAIL; else TO="$TO,$EMAIL"; fi
>>>              elif [ "$TO_CC" == "CC" ]&&  [ "${CC/$EMAIL/}" == "$CC" ]&&
>>>  [ -n "$EMAIL" ]; then
>>>                  if [ -z "$CC" ]; then CC=$EMAIL; else CC="$CC,$EMAIL"; fi
>>> +            elif [ "$TO_CC" == "FROM" ]&&  [ "${FROM/$EMAIL/}" == "$FROM"
>>> ]&&  [ -n "$EMAIL" ]; then
>>> +                if [ -z "$FROM" ]; then FROM=$EMAIL; fi
>>>              fi
>>>          done
>>>      done
>>> @@ -85,6 +87,7 @@ done
>>>  # etc. (*-by) will be added to CC.
>>>  if [ $AUTO -eq 1 ]; then
>>>      harvest_recipients TO "^[Tt][Oo]: *"
>>> +    harvest_recipients FROM "^[Ff][rR][oO][mM]: *"
>>>      harvest_recipients CC "^[Cc][Cc]: *"
>>>      harvest_recipients CC "^.*-[Bb][Yy]: *"
>>>  fi
>>> @@ -112,20 +115,14 @@ read cont
>>>  if [ "$cont" == "y" ] || [ "$cont" == "Y" ]; then
>>>      ERROR=0
>>>      for PATCH in $PDIR/*patch; do
>>> -        # Insert To and CC headers via formail to keep them separate and
>>> -        # appending them to the sendmail command as -- $TO $CC has proven
>>> -        # to be an exercise in futility.
>>> -        #
>>> -        # Use tail to remove the email envelope from git or formail as
>>> -        # msmtp (sendmail) would choke on them.
>>> -        cat $PATCH | formail -I "To: $TO" -I "CC: $CC" | tail -n +2 |
>>> sendmail -t
>>> +        # Insert To and CC headers
>>> +       git send-email --to="$TO" --cc="$CC" --from="$FROM" --confirm=auto
>>> $PATCH
>>>          if [ $? -eq 1 ]; then
>>>              ERROR=1
>>>          fi
>>>      done
>>>      if [ $ERROR -eq 1 ]; then
>>> -        echo "ERROR: sendmail failed to send one or more messages. Check
>>> your"
>>> -        echo "       sendmail log for details."
>>> +        echo "ERROR: git send-mail failed to send one or more messages."
>>>      fi
>>>  else
>>>      echo "Send aborted."
>>
>>
>> --
>> Darren Hart
>> Yocto Linux Kernel
>>
> _______________________________________________
> poky mailing list
> poky at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/poky
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the poky mailing list