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

Darren Hart dvhart at linux.intel.com
Tue Dec 21 13:19:38 PST 2010


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.

Other than using your local git mail aliases, I don't see any advantage 
to using git-send-email. 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?

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



More information about the poky mailing list