Next: , Previous: cvsutils -- General Utilities For Use With CVS, Up: Third-Party Tools

cvs2cl – Generate GNU-Style ChangeLogs

Depends on: Perl

URL: condenses and reformats the output of cvs log to create a GNU-style ChangeLog file for your project. ChangeLogs are chronologically organized documents showing the change history of a project, with a format designed specifically for human-readability (see the following examples).

The problem with the cvs log command is that it presents its output on a per-file basis, with no acknowledgement that the same log message, appearing at roughly the same time in different files, implies that those revisions were all part of a single commit. Thus, reading over log output to get an overview of project development is a hopeless task – you can really only see the history of one file at a time.

In the ChangeLog produced by, identical log messages are unified, so that a single commit involving a group of files shows up as one entry. For example:

     floss$ -r
     cvs log: Logging .
     cvs log: Logging a-subdir
     cvs log: Logging a-subdir/subsubdir
     cvs log: Logging b-subdir
     floss$ cat ChangeLog
     1999-08-29 05:44  jrandom
        * README (1.6), hello.c (2.1), a-subdir/whatever.c (2.1),
        a-subdir/subsubdir/fish.c (2.1): Committing from pcl-cvs 2.9, just
        for kicks.
     1999-08-23 22:48  jrandom
        * README (1.5): [no log message]
     1999-08-22 19:34  jrandom
        * README (1.4): trivial change

The first entry shows that four files were committed at once, with the log message, "Committing from pcl-cvs 2.9, just for kicks.". (The -r option was used to show the revision number of each file associated with that log message.)

Like CVS itself, takes the current directory as an implied argument but acts on individual files if given file name arguments. Following are a few of the most commonly used options.

Karl Fogel wrote this book. Buy a printed copy via his homepage at

copyright  ©  March 20 2019 sean dreilinger url: