Subject: New CVS

From: "J.T. Conklin" <[email-masked]>

I've put a copy of my CVS on ftp.cygnus.com:~/pub/jtc/cvs-1.3a.tar.gz.

This is the CVS 1.3.91 snapshot, plus a lot of performance and some
structural improvements.  All of the changes have been sent to the CVS
maintainers, but I've been told that some of them are going to be held
until after CVS 1.4 is released.  Since it's been about 2 months since
the last snapshot, I wouldn't bet that 1.4 will _ever_ be released.

The performance improvements I have made so far have concentrated on
speeding up CVS when it's "deciding what to do".  I made measurements
at Cygnus that showed a 5x improvement in "cvs update".  

Note that you may not observe as dramatic results because part of the
performance improvements were the result of using methods that scale
to the task of files with hundreds, if not thousands, of revisions (I
have a graph of the old CVS hash function's behavior that is really
amusing) and by deferring work until it is needed.  On the other hand,
this version uses the d_type field of a struct dirent (on systems that
support it) to avoid lots of stats.  Since CVS on SunOS 4.1.3 spends
more than 20% of the time in stat, this should prove to be a big win
for NetBSD.

Also, there is one performance change that was not quite ready for
this release that looks very promising.  Instead of completely parsing
the RCS files, only the first field "head" is read.  Most of the time
this is all that is needed.  On the Alpha I use at work, CVS was
spending more than 50% of the time in getrcskey() before I made this
change.  Now it spends less than 4%.  I'm planning on having this
ready for a cvs-1.3b release, which I hope to have up for FTP in two
weeks.

	--jtc