[OE-core] [RFC PATCH v2 14/15] send-pull-request: streamline git-send-email usage

Khem Raj raj.khem at gmail.com
Tue May 17 17:05:30 UTC 2011


On Mon, May 16, 2011 at 3:26 PM, Darren Hart <dvhart at linux.intel.com> wrote:
> The script was sending one patch at a time, which defeats the internal
> confirmation mechanism of git-send-email (which would otherwise allow
> the user to send all patches or abort immediately).
>
> Rework the sending logic to use no more than two commands. Use two
> commands when the cover letter is to be sent to all recipients with
> the -a argument. Otherwise, send all patches via the same command.
>
> The script duplicates git's send confirmation, eliminate that.
>
> Signed-off-by: Darren Hart <dvhart at linux.intel.com>
> Reported-by: Khem Raj <raj.khem at gmail.com>
> Cc: Khem Raj <raj.khem at gmail.com>
> Cc: Joshua Lock <josh at linux.intel.com>
> ---
>  scripts/send-pull-request |   68 +++++++++++++++++---------------------------
>  1 files changed, 26 insertions(+), 42 deletions(-)
>
> diff --git a/scripts/send-pull-request b/scripts/send-pull-request
> index 21eb302..8d0bd34 100755
> --- a/scripts/send-pull-request
> +++ b/scripts/send-pull-request
> @@ -1,6 +1,7 @@
>  #!/bin/bash
>  AUTO=0
>  AUTO_CL=0
> +GITSOBCC=""
>
>  # Prevent environment leakage to these vars.
>  unset TO
> @@ -59,10 +60,11 @@ while getopts "achp:t:" OPT; do
>        case $OPT in
>        a)
>                AUTO_CL=1
> -               AUTO=1
> -               ;;
> +               # Fall through to include -c
> +               ;&
>        c)
>                AUTO=1
> +               GITSOBCC="--signed-off-by-cc"
>                ;;
>        h)
>                usage
> @@ -130,48 +132,30 @@ if [ -z "$TO" ] && [ -z "$AUTO_CC" ]; then
>  fi
>
>
> -# Generate report for the user and require confirmation before sending
> -cat <<EOM
> -The following patches:
> -$(for PATCH in $PDIR/*.patch; do echo "    $PATCH"; done)
> +# Convert the collected addresses into git-send-email argument strings
> +export IFS=$','
> +GIT_TO=$(for R in $TO; do echo -n "--to='$R' "; done)
> +GIT_CC=$(for R in $AUTO_CC; do echo -n "--cc='$R' "; done)
> +unset IFS
>
> -will now be sent via the git send-email command. Git will prompt you before
> -sending any email.
>
> -EOM
> -echo "Continue? [y/N] "
> -read cont
> -
> -if [ "$cont" == "y" ] || [ "$cont" == "Y" ]; then
> -       ERROR=0
> -       export IFS=$','
> -       GIT_TO=$(for R in $TO; do echo -n "--to='$R' "; done)
> -       GIT_CC=$(for R in $AUTO_CC; do echo -n "--cc='$R' "; done)
> -       unset IFS
> -       for PATCH in $PDIR/*patch; do
> -               if [ $AUTO -eq 1 ]; then
> -                       if [ $PATCH == "$CL" ] && [ $AUTO_CL -eq 1 ]; then
> -                               # Send the cover letter to every recipient, both
> -                               # specified as well as harvested.
> -                               eval "git send-email $GIT_TO $GIT_CC --confirm=always --no-chain-reply-to --suppress-cc=all $PATCH"
> -                       else
> -                               # Send the patch to the specified recipients and
> -                               # those git finds in this specific patch.
> -                               eval "git send-email $GIT_TO --confirm=always --no-chain-reply-to --signed-off-by-cc $PATCH"
> -                       fi
> -               else
> -                       # Only send to the explicitly specified recipients
> -                       eval "git send-email $GIT_TO --confirm=always --no-chain-reply-to --suppress-cc=all $PATCH"
> -               fi
> -               if [ $? -eq 1 ]; then
> -                       ERROR=1
> -               fi
> -       done
> -
> -       if [ $ERROR -eq 1 ]; then
> -               echo "ERROR: Failed to send one or more messages."
> +# Handoff to git-send-email. It will perform the send confirmation.
> +PATCHES=$(echo $PDIR/*.patch)
> +if [ $AUTO_CL -eq 1 ]; then
> +       # Send the cover letter to every recipient, both specified as well as
> +       # harvested. Then remove it from the patches list.
> +       eval "git send-email $GIT_TO $GIT_CC --confirm=always --no-chain-reply-to --suppress-cc=all $CL"
> +       if [ $? -eq 1 ]; then
> +               echo "ERROR: failed to send cover-letter with automatic recipients."
> +               exit 1
>        fi
> -else
> -       echo "Send aborted."
> +       PATCHES=${PATCHES/"$CL"/}
>  fi
>
> +# Send the patch to the specified recipients and, if -c was specified, those git
> +# finds in this specific patch.
> +eval "git send-email $GIT_TO --confirm=always --no-chain-reply-to $GITSOBCC $PATCHES"
> +if [ $? -eq 1 ]; then
> +       echo "ERROR: failed to send patches."
> +       exit 1
> +fi


now it will ask the usual git confirmation once for all the patches
are now mentioned on the commandline instead of a loop.
So I can say 'a'  all in the confirmation and then it will take that
to send all patches. Is my understanding right ?

If so then it seems ok to me

> --
> 1.7.1
>
>




More information about the Openembedded-core mailing list