git users might want to take a look at a git repository of cvsps which has some bugfixes which the author of cvsps (and this website) is too lazy to merge into his repo and release a new version. That page is at http://ydirson.free.fr/en/software/scm/cvsps.ht ml


This is the website for CVSps. CVSps is a command line utility for Linux and other UNIX type operating systems. If you are looking for information about Cobite, try our main page at http://www.cobite.com

While cvs is a fantastic and widely used revision control system, it has some gaps is its functionality. CVSps attempts to fill one of those gaps. To quote the README:
  CVSps is a program for generating 'patchset' information from a CVS repository. A patchset in this case is defined as a set of changes made to a collection of files, and all committed at the same time (using a single 'cvs commit' command). This information is valuable to seeing the big picture of the evolution of a cvs project. While cvs tracks revision information, it is often difficult to see what changes were committed 'atomically' to the repository.  
If you don't know what cvs is, try http://www.cvshome.org.

screen snapshots

Everyone loves screen snapshots, so here's a sample of what the output of CVSps looks like:
PatchSet 999
Date: 2002/07/11 19:50:46
Author: alan
Branch: HEAD
Tag: (none)
[PATCH] Fix several pdc202xx problems

Misnaming of 20270 as 20268R
Failure of LBA48 on 20262
Incorrect speed detection because the old driver used host not drive side
cable detect
PDC202xx handling for quirks in udma reporting off some drives
LBA48 for PIO mode

BKrev: 3d2dd386wJMnehoOAhv3wL991IfXVQ


This snapshot shows the output of one patchset. This patchset is taken from actual output when running against the BK->CVS 2.4 kernel tree. You can see it tracks all files changed, gives the pre- and post- revision numbers, and (when applicable, not in this example) indicates what branch the patchset was on. It is also possible to generate a diff of the patchset using CVSps. CVSps essentially gives you the equivalent to tagging before and after each commit.


A description of the usage of cvsps tersely describes a lot of its features:
$ cvsps -h

Usage: cvsps [-h] [-x] [-u] [-z <fuzz>] [-g] [-s <range>[,<range>]]  
             [-a <author>] [-f <file>] [-d <date1> [-d <date2>]] 
             [-b <branch>]  [-l <regex>] [-r <tag> [-r <tag>]] 
             [-p <directory>] [-v] [-t] [--norc] [--summary-first]
             [--test-log <captured cvs log file>] [--bkcvs]
             [--no-rlog] [--diff-opts <option string>] [--cvs-direct]
             [--debuglvl <bitmask>] [-Z <compression>] [--root <cvsroot>]
             [<repository>] [-q]

  -h display this informative message
  -x ignore (and rebuild) cvsps.cache file
  -u update cvsps.cache file
  -z <fuzz> set the timestamp fuzz factor for identifying patch sets
  -g generate diffs of the selected patch sets
  -s <patch set>[-[<patch set>]][,<patch set>...] restrict patch sets by id
  -a <author> restrict output to patch sets created by author
  -f <file> restrict output to patch sets involving file
  -d <date1> -d <date2> if just one date specified, show
     revisions newer than date1.  If two dates specified,
     show revisions between two dates.
  -b <branch> restrict output to patch sets affecting history of branch
  -l <regex> restrict output to patch sets matching <regex> in log message
  -r <tag1> -r <tag2> if just one tag specified, show
     revisions since tag1. If two tags specified, show
     revisions between the two tags.
  -p <directory> output patch sets to individual files in <directory>
  -v show very verbose parsing messages
  -t show some brief memory usage statistics
  --norc when invoking cvs, ignore the .cvsrc file
  --summary-first when multiple patch sets are shown, put all summaries first
  --test-log <captured cvs log> supply a captured cvs log for testing
  --diff-opts <option string> supply special set of options to diff
  --bkcvs special hack for parsing the BK -> CVS log format
  --no-rlog disable rlog (it's faulty in some setups)
  --cvs-direct (--no-cvs-direct) enable (disable) built-in cvs client code
  --debuglvl <bitmask> enable various debug channels.
  -Z <compression> A value 1-9 which specifies amount of compression
  --root <cvsroot> specify cvsroot.  overrides env. and working directory
  -q be quiet about warnings
  <repository> apply cvsps to repository.  overrides working directory

cvsps version 2.0rc1



CVSps is GPLed software. If you want more information on the GPL, visit:


You can download the source tarball for CVSps here:
cvsps-2.2b1.tar.gz   (most recent dev version)
cvsps-2.1.tar.gz   (most recent stable version)
For a summary of changes, read the CHANGELOG


If you want to send comments, bug reports or feature requests to me, David Mansfield, try cvsps@dm.cobite.com.