Posts Tagged ‘email’

Svn Notify

Sunday, May 24th, 2009

Have you ever needed to configure subversion in order to send mails containing details about the latest commit?
Well on the net you can find a lot of scripts useful for this purpose, but i decided to write my own one in order to make it as simple as possible!
External packages needed: nc (netcat).

#!/usr/bin/env bash

SERVER=smtp.tiscali.it
DOMAIN=tiscali.it

if [ $# -lt 3 ]; then
	printf "Usage: $0 path revision address1 address2 ..\n"
	exit 1
fi

REPO="$1"
PROJECT="`basename $REPO`"
FROM="notify-$PROJECT@mldb.net"
REVISION=$2
OLD=$(( $REVISION - 1 ))
shift
shift

MESSAGE="`mktemp`"

printf "HELO $DOMAIN\n" >> $MESSAGE
printf "MAIL FROM: <$FROM>\n" >> $MESSAGE
for i; do
	printf "RCPT TO: <$i>\n" >> $MESSAGE
done
printf "DATA\n" >> $MESSAGE
printf "From: MLDB Commit Notify <$FROM>\n" >> $MESSAGE
printf "To: " >> $MESSAGE
for i; do
	printf "<$i>," >> $MESSAGE
done
printf "\n" >> $MESSAGE
printf "Subject: $PROJECT: revision $REVISION\n" >> $MESSAGE
printf "\n" >> $MESSAGE

svn log file://"$REPO" -r $REVISION >> $MESSAGE
svn diff file://"$REPO" -r $OLD:$REVISION >> $MESSAGE

printf ".\n" >> $MESSAGE
printf "QUIT\n" >> $MESSAGE

nc $SERVER 25 < $MESSAGE

rm $MESSAGE