ScmBug
The ScmBug project (http://www.mkgnu.net/?q=scmbug) aims to create a generic bridge between Software Content Management (SCM) systems and Bug tracking systems. It currently supports CVS and Subversion on the SCM side, and Bugzilla and Mantis on the Bug tracker side.
There are two parts to ScmBug:
ScmBug uses a Subversion "pre-commit" hook to parses the commit log message looking for any Bug IDs. In order for this to work, the commit log message has to be formatted in standard way (and thanks to BugTraq, it is!) When it finds a Bug ID, it connects to the server process and passes the Bug ID and commit information.
The server process then updates Bugzilla with the given information. It does this by calling some of the perl scripts in the Bugzilla installation directory. This means that the server process has to be on the same machine as Bugzilla.
I’m running Bugzilla on Fedora Core 5, so I used the ScmBug RPMs to install. They put a "scmbug-server" start script in "/etc/init.d".
You have to tweak the "daemon.conf" file in "/etc/scmbug" to tell it where to find Bugzilla before starting the server.
Next, you have to install the "Glue" (the Subversion hooks). ScmBug comes with a command line tool called "scmbug_install_glue" to help with this (see the ScmBug documentation on how to run it).
After this, you have to tweak the "glue.conf" file which will be located in the "hooks/etc/scmbug" directory in your Subversion repository.
The primary things you need to change in the "glue.conf" file are the regular expressions used to parse Bug IDs. Since my "bugtraq:message" = "Issue: %BUGID%", I found that the following settings work:
bugid_regex => ‘.*Issue:\s*(.*?)$’,
bugid_split_regex => ‘,\s+#|\s+#|,|\s+’,
log_regex => ‘^(([^\r\n]|[\r\n])*)Issue:.*$’
I also changed the "presence_of_bug_ids" property to "optional", otherwise you wouldn’t be able to do a commit without a bug id. I also disable the "minimum_log_message_size" enforcement.