Login | Register
My pages Projects Community openCollabNet

2020-04-07: This site is going to be decommissioned and shut down on 2020-07-01. Please copy and archive any data you wish to keep before that date.

If you were registered and logged in, you could join this project.

Summary Modular, OO-based Python framework for SVN and CVS commit script
Category scm
License Apache License
Owner(s) shaberman


  • (7/1/2005) commitmessage-2.0 released

    See Documents & files for downloads.

    • Better email date headers via rfc822 - Gerald Combs

  • (1/12/2005) commitmessage-2.0-rc-3 released

    • New summaryThreshold feature (Subversion only) for not parsing diffs for large commits - Jonathan Vonk
    • Work around for severe Subversion bug (issue 1789) on Windows which would cause commitmessage to hang - Jonathan Vonk

  • (1/6/2005) commitmessage-2.0-rc-2 released

    • Better i18n support (e.g. umlauts) in sent emails by using a customizable Content-Type header (defaults to text/plain; charset="iso-8859-1")

  • (11/16/2004) commitmessage-2.0-rc-1 released

    • Bug fix for setting Subversion properties on the root directory

  • (9/21/2004) commitmessage-2.0-beta-6 released

    • DEFAULT_MODULE support for when no other module matches - Jonathan Vonk
    • UNIVERSAL_MODULE support for every commit - Jonathan Vonk

  • (9/21/2004) commitmessage-2.0-beta-5 released

    • Subversion bug fix for directory property changes
    • Email cc support
    • Removed msnp and toc from the distribution - users must download the packages themselves now to avoid GPL license issues

  • (9/8/2004) commitmessage-2.0-beta-4 released

    • Subversion bug fixes with spaces and properties
    • user login name -> email address map functionality
    • configurable multiple repos-per-config file functionality (matchAgainstRepoPrefix)
    • configurable inclusion of module/repo names in the model (addRepoPrefix)

  • (3/14/2004) commitmessage-2.0-beta-3 released

    • several bug fixes (svnlook not having the right permissions, etc.)
    • a profiling option (-p) to debug slow commits (rarely happens)
    • the addition of another view to send email with the diffs as an attached patch file - Juan F. Codagnone

  • (2/7/2004) commitmessage-2.0-beta-2 released

    • fixed wrong EOL in the tar.gz distribution
    • sending email to multiple address
    • the addition of IM support (AIM and MSN)

The API documentation is available at http://commitmessage.tigris.org/docs/public/trees.html


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.


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.