On Mon, May 16, 2011 at 3:26 PM, Darren Hart <[email protected]> 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 <[email protected]> > Reported-by: Khem Raj <[email protected]> > Cc: Khem Raj <[email protected]> > Cc: Joshua Lock <[email protected]> > --- > 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 > > _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
