On Fri, 2011-05-13 at 16:44 -0700, Khem Raj wrote: > On Fri, May 13, 2011 at 4:38 PM, Darren Hart <[email protected]> wrote: > > Rather than sending every patch to every recipient of the entire series when > > -a is used, only send the cover letter to everyone and use git's > > --signed-off-by-cc feature to generate an auto cc list for the individual > > patches. > > > > Using git to harvest the Cc list means only collecting Signed-off-by and Cc > > lines, rather than the more generic *-by lines previously. This is a fair > > trade-off for significantly reduced complexity. If users want to add > > Acked-by > > and Tested-by lines and want to use the -a feature, they should include > > those > > recipients as Cc lines as well. > > > > Now that we rely on git for auto-cc for the individual patches, > > make sure the user is prompted before sending each patch by forcing > > --confirm=always. > > it can be tedious for large patchsets say 30-40 patches. and moreover > if something is wrong in middle of sending series of patches say a CC > list is wrong then what to do as some of the patches would have > already been sent. So I would suggest a dry pass > where it will show you the email headers and CC list so sender can be > assured that all is well > and then he can send them all at once.
Agree with Khem here, unless you're trying to force people to send smaller patch series? > > > > > Signed-off-by: Darren Hart <[email protected]> > > Cc: Khem Raj <[email protected]> > > Cc: Koen Kooi <[email protected]> > > --- > > scripts/send-pull-request | 60 > > +++++++++++++++++++++++++++------------------ > > 1 files changed, 36 insertions(+), 24 deletions(-) > > > > diff --git a/scripts/send-pull-request b/scripts/send-pull-request > > index b294d35..f94596f 100755 > > --- a/scripts/send-pull-request > > +++ b/scripts/send-pull-request > > @@ -4,33 +4,34 @@ AUTO=0 > > # Prevent environment leakage to these vars. > > unset TO > > unset CC > > +unset AUTO_CC > > > > usage() > > { > > cat <<EOM > > Usage: $(basename $0) [-h] [-a] [[-t email]...] -p pull-dir > > -t email Explicitly add email to the recipients > > - -a Automatically harvest recipients from "*-by: email" lines > > - in the patches in the pull-dir > > + -a Automatically harvest recipients from Cc and Signed-off-by > > lines > > + in the patches in the pull-dir. These will be used on a per > > + patch basis. The cover-letter will be sent to all addresses. > > -p pull-dir Directory containing summary and patch files > > EOM > > } > > > > -# Collect To and CC addresses from the patch files if they exist > > -# $1: Which header to add the recipients to, "TO" or "CC" > > -# $2: The regex to match and strip from the line with email addresses > > +# Collect addresses from a patch into AUTO_CC > > +# $1: a patch file > > harvest_recipients() > > { > > - TO_CC=$1 > > - REGX=$2 > > + PATCH=$1 > > export IFS=$',\n' > > - for PATCH in $PDIR/*.patch; do > > - # Grab To addresses > > + for REGX in "^[Cc][Cc]: *" "^[Ss]igned-[Oo]ff-[Bb]y: *"; do > > for EMAIL in $(sed '/^---$/q' $PATCH | grep -e "$REGX" | sed > > "s/$REGX//"); do > > - if [ "$TO_CC" == "TO" ] && [ "${TO/$EMAIL/}" == > > "$TO" ] && [ -n "$EMAIL" ]; then > > - 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 > > + if [ "${AUTO_CC/$EMAIL/}" == "$AUTO_CC" ] && [ -n > > "$EMAIL" ]; then > > + if [ -z "$AUTO_CC" ]; then > > + AUTO_CC=$EMAIL; > > + else > > + AUTO_CC="$AUTO_CC,$EMAIL"; > > + fi > > fi > > done > > done > > @@ -84,13 +85,11 @@ for TOKEN in SUBJECT BLURB; do > > done > > > > > > -# Harvest emails from the generated patches and populate the TO and CC > > variables > > -# In addition to To and CC headers/lines, the common Signed-off-by, > > Tested-by, > > -# etc. (*-by) will be added to CC. > > +# Harvest emails from the generated patches and populate AUTO_CC. > > if [ $AUTO -eq 1 ]; then > > - harvest_recipients TO "^[Tt][Oo]: *" > > - harvest_recipients CC "^[Cc][Cc]: *" > > - harvest_recipients CC "^[A-Z][A-Za-z-]*-[Bb][Yy]: *" > > + for PATCH in $PDIR/*.patch; do > > + harvest_recipients $PATCH > > + done > > fi > > > > AUTO_TO="$(git config sendemail.to)" > > @@ -102,7 +101,7 @@ if [ -n "$AUTO_TO" ]; then > > fi > > fi > > > > -if [ -z "$TO" ] && [ -z "$CC" ]; then > > +if [ -z "$TO" ] && [ -z "$AUTO_CC" ]; then > > echo "ERROR: you have not specified any recipients." > > usage > > exit 1 > > @@ -114,7 +113,8 @@ cat <<EOM > > The following patches: > > $(for PATCH in $PDIR/*.patch; do echo " $PATCH"; done) > > > > -will now be sent via the git send-email command. > > +will now be sent via the git send-email command. Git will prompt you before > > +sending any email. > > > > EOM > > echo "Continue? [y/N] " > > @@ -124,11 +124,23 @@ 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 $CC; do echo -n "--cc='$R' "; done) > > + GIT_CC=$(for R in $AUTO_CC; do echo -n "--cc='$R' "; done) > > unset IFS > > for PATCH in $PDIR/*patch; do > > - # We harvest the emails manually, so force git not to. > > - eval "git send-email $GIT_TO $GIT_CC --no-chain-reply-to > > --suppress-cc=all $PATCH" > > + if [ $AUTO -eq 1 ]; then > > + if [ $PATCH == "$CL" ]; 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 > > -- > > 1.7.1 > > > > > > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core -- Joshua Lock Yocto Build System Monkey Intel Open Source Technology Centre _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
