Google CVS-log-message-to-ChangeLog conversion script

This Perl script does what you think it does: it produces a GNU-style ChangeLog for CVS-controlled sources, by running "cvs log" and parsing the output. Duplicate log messages get unified in the Right Way. If you don't know what any of that means, then you're doing fine, just keep on truckin' (i.e., hit the Back button on your browser).

Otherwise, you can download the latest version of the script, or get it via CVS thusly:

   cvs -d login
      (password "the key")

   cvs -d co cvs2cl

If you have a bug to report, please mail it to

You may also be interested in cvs2html, which converts CVS log data to HTML. It apparently organizes the data by file rather than by commit, which may be less or more useful than cvs2cl depending on your needs.

Recent developments:

  • David Carlson <> has come up with a draft dtd and output.

Here is generating several flavors of its own ChangeLog.

Note that all of these invocations also used the "--fsf" option (omitted below for brevity), because I wrote a few log entries in FSF-style as an experiment.

3. --revisions
4. --tags
5. --branches
6. --tags --revisions
7. --branches --revisions
8. --tags --branches
9. --tags --branches --revisions
10. --tags --branches --revisions --usermap $CVSROOT/CVSROOT/users --day-of-week

Running --help will get you a thorough usage message, too.

brought to you by red-bean