Subversion Post-Commit Hooks 101
The “Hello World!” of Subversion post-commit hooks is the use of SVNnotify to send e-mails out to a project team every time a new revision is committed to the repository.
This is easier than it sounds:
Make sure
svnnotifyis installed on your system. I’ll leave that as an exercise for the reader.Navigate to your repository’s
hooksdirectory. This is almost always a directory cleverly named “hooks” right inside the top level of your repository:cd /Users/mwest/svn/my_repository/hooks/Create a new file called
post-commit, and make it executable by thewwwuser.touch ./post-commit chmod 755 ./post-commitOpen up the file you just created, and add the following bit of code:
#!/bin/sh REPOS="$1" REV="$2" /usr/local/bin/svnnotify \ --repos-path "$REPOS" \ --revision "$REV" \ --subject-cx \ --with-diff \ --handler HTML::ColorDiff \ --to <your e-mail address> \ --from <from e-mail address>It’s all pretty straightforward, so let’s take it line by line:
The first line is the so-called
shebangthat tells the system that the file is a shell script that ought be executed.Next, we set two variables based on the information that Subversion passes into the script when it’s called. The
post-commithook gets two bits of data: the path to the repository, and the new revision number that the commit created.Finally, we call
svnnotifyto actually generate and send a nicely formatted e-mail using the repository path and revision number that we gathered earlier. Make sure to put your e-mail address (or list’s address) in the last two lines!
Do some work, and commit it.
Check your e-mail.
Bask in the glorious glow of a really, really useful tool.
For further reading on the nine hooks provided by Subversion, visit the “Hook Scripts” section of Version Control with Subversion.




Comments
The Debian package for svnnotify is libsvn-notify-perl.
Posted By: Nelson Castillo 23. August 2007, 00:38