Re: [PATCH] post-receive-email: ensure sent messages are not empty

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH] post-receive-email: ensure sent messages are not empty

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:14

"Kevin P. Fleming" [off-list ref] writes:
quoted hunk
@@ -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
 	done
As "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

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
 	done
As "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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help