gitblag

git push to your readers
git clone git://git.ricketyspace.net/gitblag.git
Log | Files | Refs

commit 123bc6a1aab8982955ea7d594197c2099d2acf95
parent a00a27280522ee2936734fb674e6187653af79c4
Author: rsiddharth <rsiddharth@ninthfloor.org>
Date:   Fri,  3 Jan 2014 22:09:51 +0530

[new feature]: email ID of subscribers can be listed in a plain text file & gitblag does what it has to do :)

How does this work?

List the email ID of all the subscribers, an email ID per line, in a
text file.

Next, go to the remote bare repository & give git the path to this
text file:

    git config --local --add hooks.recipientlist /path/to/recipient-list.txt

BANG! From the next time on, whenever a NEW POST is committed & pushed
to the bare repository, an email about the blag post is sent to each
email ID in the `recipient-list.txt' file.

Diffstat:
src/gitblag.sh | 30++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/gitblag.sh b/src/gitblag.sh @@ -26,6 +26,9 @@ # hooks.mailinglist # This is the list that all pushes will go to; leave it blank to not send # emails for every ref update. +# hooks.recipientlist +# Set the path to the file which contains a list of recipients (one +# recipient per line). # hooks.envelopesender # If set then the -f option is passed to sendmail to allow the envelope # sender address to be set @@ -93,8 +96,21 @@ prep_for_email() return 1 } + +process_recipient_list() +{ + # pick each recipient from list and send the email. + for recipient in $(cat $recipientlist) + do + generate_email $recipient | send_mail + done +} + + generate_email() { + recipient=$1 + generate_email_header generate_email_body @@ -113,7 +129,7 @@ generate_email_header() # --- Email (all stdout will be the email) # Generate header cat <<-EOF - To: $recipients + To: $recipient Subject: ${emailprefix} $subject X-Git-Refname: $refname X-Git-Reftype: $refname_type @@ -171,6 +187,7 @@ then fi recipients=$(git config hooks.mailinglist) +recipientlist=$(git config hooks.recipientlist) envelopesender=$(git config hooks.envelopesender) emailprefix=$(git config hooks.emailprefix || echo '[Mailing List Prefix]') @@ -186,7 +203,16 @@ else while read oldrev newrev refname do prep_for_email $oldrev $newrev $refname || continue - generate_email | send_mail + + if [ -n "$recipients" ]; then + # send to mailinglist. + generate_email $recipients | send_mail + fi + + if [ -n "$recipientlist" ]; then + # send each email ID listed in recipient list file. + process_recipient_list + fi done fi