Make Subversion send an email upon post-commit

ore than a week ago I wrote about getting Subversion running remotely. However, now that I have multiple people using it remotely I want to know when someone commits changes. I have come to find out that this is very simple to do using hooks. However, I did run into a little trouble configuring it. So here are my findings.

With a default install of Fedora Core 4, Apache 2, and Subversion you can follow my example and everything should work fine.


You should find a directory: (substitute the X’s with your version numbers)

cd /usr/share/docs/subversion-X.X.X/tools/hook-scripts

I wanted this directory to be somewhere more memorable for me, so I actually moved it to: /usr/local/bin/svn_stuff/hook-scripts

I also wanted to ensure that apache would be able to do everything that it needed to, since I am using Subversion remotely. I did it this way:

cd /usr/local/bin
mkdir svn_stuff
cp -R /usr/share/docs/subversion-X.X.X/tools/hook-scripts /usr/local/bin/svn_stuff
chmod -R 755 svn_stuff
chown -R apache.apache svn_stuff

There are many things in this directory, but the one I am using for this example is commit-email.pl.

Now that I have what I need in the /usr/local/bin/svn_stuff/hook-scripts directory I am ready to create the hook.

In my repository, which is located at /var/www/svnprojects I need to edit a file in the hooks directory. The file is post-commit.tmpl that needs to be renamed to post-commit, then edit the file by adding one line.

I renamed the file by typing:

cp post-commit.tmpl post-commit

Then I added the following line to the file post-commit:

/usr/local/bin/svn_stuff/hook-scripts/commit-email.pl $REPOS $REV me@myemail.com

And I commented out the two lines that were already in the file as examples like so:

# commit-email.pl "$REPOS" "$REV" [email protected]
# log-commit.py --repository "$REPOS" --revision "$REV"

After closing the file the email should work upon a commit.

Published by

Adam

Application Architect from Florida

Leave a Reply

Your email address will not be published. Required fields are marked *