Friday hack: rcs2log

One of my co-workers asked me this week for an easy way to see which files had changed in CVS over the last week. I suggested that rcs2log would be a good first start, but strangely enough he had never heard of it before.

rcs2log is a nifty script that you can use to generate a ChangeLog from CVS. As the name implies, the tool was originally written for RCS files, but it knows how to talk to a CVS server without any modifications needed.

It’s distributed as part of GNU emacs as a helper script for the ChangeLog feature (C-x v a), but I’ve found it really handy to use it directly from the shell to group together CVS commits in an easy-to-read chronological order.

After installing emacs, I simply do this:

cp /usr/local/libexec/emacs/21.2/i386--freebsd/rcs2log $HOME/bin

And then it’s available in my $PATH to run from the shell whenever I need it.

rcs2log isn’t a complete replacement for other tools. I often use cvs log when I need details about a single file or I need to see down-to-the-second timestamps or symbolic tags. And I really like the multi-colored diffs that ViewCVS and Chora can generate. But rcs2log fills a niche that nothing else does.