If you were registered and logged in, you could join this project.
News
The API documentation is available at http://commitmessage.tigris.org/docs/public/trees.html
Overview
commitmessage provides a modular, easy-to-use approach to sending
CVS and SVN commit information to other systems.
Many scripts already exist to send out email diffs for commits, post
information into bug tracking systems, etc., but they all have tight coupling
between the logic of collecting information from CVS and the logic of sending
relevant information out to the other system.
commitmessage takes smarter approach: MVC.
A controller exists for each supported SCM (CVS and SVN) that populates a
generic model of the entire commit (not just per-directory as is the default in
CVS) and then passes the model to the configured views.
The views are written as Python classes and are dynamically configured via the
commitmessage.conf file to allow the controller to allocate and
execute them with no customization of the controllers or views by the user.
Also, the commitmessage.conf can set view properties on either a
global or per-module basis to allow a single view class to be reused by various
modules with module-specific behavior (e.g. different email addresses per
module).
The overall affect is cutting down on the extreme duplication between scripts
that used to occur just to change the target system or even simple properties
such as URLs or mailing address for different modules. With commitmessage, the
simple commitmessage.conf is the only file you'll ever have to
edit.
Usage
commitmessage is very easy to use. Just download the file and hook it into
either your CVSROOT or SVN hooks directory by
following the docs:
Related resources
-
The Perl scripts of the 1.0 branch are originally based on the Apache CVS
scripts at http://cvs.apache.org/viewcvs.cgi/CVSROOT/.
While the Apache scripts had the cool per-commit instead of per-directory
functionality, the view logic of formatting together the email was spread all
over the file and directly mixed in with other logic.