I came up with the following shell script recently to monitor code changes in a subversion repository. On the first run it will emails out the 10 most recent changes. After that the script mails out all changes since the last time it was run. You can set it up to run as a daily cron job which mails you all changes made to you favourite open source project!
It wouldn't take much to get it working with other version control systems such as Git or Bazaar, or to do some nice formatting of the output instead of outputting the raw svn log as-is. Let me know if you find it useful!
#!/bin/bash
# Shell script to email the latest changes in an SVN
# repsitory to a specified email address.
# Ben Dowling - wwww.coderholic.com
svnUrl="http://anonsvn.wireshark.org/wireshark/trunk/"
lastRevisionFile="./.last-revision"
mailto="ben@coderholic.com"
function getCurrentRevision {
# Get the current SVN revision, eg. "r4670"
currentRevision=$(svn log "$svnUrl" -r HEAD 2>/dev/null | head -n2 | grep -v -- "-------" | awk '{ print $1 }')
# Strip off the 'r'
currentRevision="${currentRevision:1}"
echo "$currentRevision"
}
currentRevision=$(getCurrentRevision)
# If we've run this program before then we've stored the SVN revision at the time
if [ -f "$lastRevisionFile" ]
then
lastRevision=$(cat "$lastRevisionFile")
# Check what the current revision is, and exit if there
# haven't been any changes since we last checked
if [ $currentRevision -lt $lastRevision ]
then
echo "No changes since last check"
exit
fi
else
# We haven't run this program before, so set the last revision to the current revision - 10
lastRevision=$(echo "$currentRevision - 10" | bc)
fi
# Mail the SVN changes
svn log "$svnUrl" -r "HEAD:${lastRevision}" | mail -s "SVN changes for $svnUrl" $mailto
# Store the current revision + 1 as the last revision
revision=$(echo "$currentRevision + 1" | bc)
echo "$revision" > "$lastRevisionFile"