There are several ways to set up commit notification in subversion. Each involves the use of the post-commit hook. Here's how it works: After the subversion repository successfully commits a change, if it finds an executable file, /path/to/svn/hooks/post-commit, it will be invoked with two arguments. The first is the path to the repository, and the second is the revision number of the commit.
The content of post-commit can be whatever you want. In practice, most people make it a shell script that just invokes a utility like svnnotify to get things done.
Since the repository I was working on is hosting multiple projects (ala apache), each top-level project has it's own
codewatch
mailing list. I don't want to spam each project with every change to unrelated projects in the repository. So, based on arguments passed to post-commit
, I had to start by determining which project the change was relevant to. I used the svnlook utility for this, like so:# Get the first top-level directory changed by the commitOnce I had that information, the rest was straightforward. Here's the whole script.
# Note: svnlook's dirs-changed output is multi-line, and
# each line looks like "projname/trunk/etc"
PROJ=`/usr/bin/svnlook dirs-changed -r $2 $1|head -1|sed -e 's/\/.*//g'`
No comments:
Post a Comment