Re: [PATCH] post-receive-email: ensure sent messages are not empty
From: Kevin P. Fleming <hidden>
Date: 2016-06-15 22:49:14
On 08/02/2010 05:00 PM, Junio C Hamano wrote:
"Kevin P. Fleming" [off-list ref] writes:quoted
@@ -687,10 +699,12 @@ if [ -n "$1" -a -n "$2" -a -n "$3" ]; then # Output to the terminal in command line mode - if someone wanted to # resend an email; they could redirect the output to sendmail # themselves - PAGER= generate_email $2 $3 $1 + prep_for_email $2 $3 $1 + PAGER= generate_email else while read oldrev newrev refname do - generate_email $oldrev $newrev $refname | send_mail + prep_for_email $oldrev $newrev $refname + generate_email | send_mail doneAs "prep" exits, when this is run as a hook to read many updated refs, any inappropriate update to one ref will cause messages for later refs from getting sent out. Earlier such an update may have sent an empty message but at least didn't break messages for other refs, if I am reading the code correctly. Is that what you really want? Perhaps you would want to do something like this instead, after adjusting the exit code from the new "prep" shell function? while ... do prep_for_email || continue generate_email | send_mail done
You are right; instead of prep_for_email using 'exit 0' to stop the process as was done before, it should just return an exit code to skip the current ref being processed. This was also a bug previously, since generate_email used 'exit 0' to stop the processing of a particular ref, which would actually stop processing of any further refs as well. -- Kevin P. Fleming Digium, Inc. | Director of Software Technologies 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA skype: kpfleming | jabber: kfleming@digium.com Check us out at www.digium.com & www.asterisk.org