cvs-exp.pl: A global-picture chronological "cvs log" postprocessor
 author: Sitaram Iyer <sitaram@gmail.com> 11jan00, one afternoon's work
 Copyright (C) 2000 Rice University

 cvs-exp.pl, a wrapper around (and a spoof of) the "cvs log" command, is a
 way of chronologically tracking events in a cvs repository, when you're
 lost among lots of branches and tags and little idea of what's going on.

 "cvs log" is reasonably good for tracking changes to a single file, but
 for an entire project with lots of branches and tags, it provides _no_
 idea of what's happening on the whole. This cvs-exp.pl works on the output
 of cvs log and arranges events chronologically, merging entries as needed.
 by keeping track of lists of files and revisions, it figures when in the
 sequence of events were various tags and branches created. It prints out a
 cute-looking tree at the end to summarize activity in the repository.

Download: cvs-exp.pl

Examples:

Usage:

    cvs-exp.pl [opts] [arguments to cvs log] [dir]
or  cvs log | cvs-exp.pl [opts]

cvs-exp.pl creates a chronological view of the commits, tags, and branching
events within a CVS module or set of CVS modules. cvs-exp.pl uses the 'cvs log'
(or 'cvs rlog') command to gather raw materials for formatted output.

Options:
   -nolog           don't do the log; only show the tag tree at the end
   -notree          vice versa - the default is to print both.
   -nofiles         don't list files in the log

                   The previous three options are overridden by the
                   following options:

   -before          return version information for all files as they were
                    before a given changeset. (Requires -changeset .)
   -changeset nn    return information on specific checkin nn
   -search str      search for all commits whose comments match the regular
                    expression 'str'
   -info str        search for all commits whose date or author match the
                    regular expression 'str'
   -last            return only the most recent commit matching a search
                    (only meaningful with the '-info' option)
   -remote          use 'cvs rlog' rather than 'cvs log'
   -help            when all else fails

Changelog:

 - Bugfix contributed by Adam Bregenzer <adam@bregenzer.net> on Oct 24, 2002
   to allow for spaces in filenames.

 - david.fleck@ugs.com (July 2004):
   added -before, -changeset, -search, -info, -last, and -remote functions.

 - Bugfix from Peter Conrad <conrad@tivano.de> on Nov 30, 2004
   to remove a superfluous line with a "," if a file has a long pathname

Contributions:

older versions of cvs-exp.pl