[cvsnt] Alpha 1 changes

Tony Hoyle tmh at nodomain.org
Sat Sep 14 00:24:00 BST 2002

First off I'll get the warning out of the way:

* Don't use this on a production server.  In particular if you enable
  certain features there is NO GOING BACK.  A lot of work has been done on
  the RCS code and I can't guarantee 100% you won't lose anything *

However if you're curious and don't mind doing some bug hunting then
setting up a test repository and playing with it is a good idea.

New features (summary):

Flexible CVSROOT parsing
HTTP Proxy support
Test script
Quiet diff
Binary delta support
Server can request or require encryption
Server can request or require compression
Selection of alternate cvs administrator groups
Import can create CVS/ directories
Repository activity monitoring via Lock Daemon
postcommit script run after commit finished
Repository prefix obeyed on all output
Filename selection on 'cvs ls'
rlog -S support
Server side cvsrc
RCS code restructure

New features (long bit):

Flexible CVSROOT parsing:

The following are all now valid...

:pserver:foo at bar.com:2401/repository
:pserver;port=2401:foo at bar.com:/repository
[method=pserver,port=2401,user=foo,host=bar.com,path=/repository] ... and
lots of combinations of the above.

HTTP Proxy support:

OK I don't like it but it kind of fell out as easy to do after rewriting
the root parsing...

:pserver;proxy=server.foo.com;proxyport=500:foo at bar.com:/repository
(there's also proxyprotocol, proxyuser and proxypassword for future

Test Script:

I now test the release using a python script, which is in the 'testcvs'
directory of the source release.  It's quite simple at the moment and
needs lots more tests, but it's a start.

Quiet diff:

'cvs -q diff ....' will strip some of the cruft from the cvs diff files,
so they look more like standard diff files on output.

Binary delta support:

Not enabled by default (because it causes RCS file format changes) this
uses the xdelta library to find the smallest delta between binaries. To
enable this mode you have to put 'CompatMode=No' in the CVSROOT/config.
*After this has been done you cannot go back - it changes the format of
the RCS files as they are rewritten.  You have been warned*

Server can request or require encryption: Server can request or require

These options allow you to control how people access your repository.
Useful if you're on a slow link or would rather people don't send the data
plain-text over the internet.

Selection of alternate cvs administrator groups:

As well as using the default administrator account on the domain, you can
tell the server to use any group as a cvs administrator group (requires

Import can create CVS/ directories:

The new 'import -C' option creates default CVS/ directories whilst
importing a new repository.  It has to guess at some things, but should be
correct for a standard import.

Repository activity monitoring via Lock Daemon:

The lock daemon now supports a 'Log' command that gets the cvs history
data real-time.  In theory this should allow clients to know when files
are changed on the server w/o having to run 'update'.

The 'Monitor' command now has filtering to facilitate this.  It takes a
parameter that states which information the client is interested in:

C - Client log on/off
L - Lock creation/Deletion
H - History data

Or any combination of the above.

postcommit script run after commit finished:

After the loginfo/commitinfo scripts are run and the locks have been
removed from the repository, the postcommit script is run, within which it
should be safe to run checkouts for websites, etc.

Repository prefix obeyed on all output:

All RCS/CVS output is filtered through the repository prefix.

Filename selection on 'cvs ls':

You can now select filenames to list via 'cvs ls'.  The syntax is Unix
egrep format, which works enough like DOS format to get away with it most
of the time:

cvs ls foo\*.asp  - works
cvs ls foo\*asp - the same as above (the '.' just means 'any character')
cvs ls foo\^.*\.asp$ - probably what you meant really... but if the first
one works...

rlog -S support:

This supresses output when the select revision count is zero.

Server side cvsrc:

You can now make compatible (ie clients have default options for
a repository, by putting the data in CVSROOT/cvsrc.

RCS code restructure:

I've restructured the RCS code so it doesn't leak file handles as much,
which should help with the 'can't rename' errors that occur sometimes.

There's probably other stuff I've forgotten about.

A lot of this is barely tested at the moment... I'm pushing it out there
to see what you guys think and so you can break it for me :-)


More information about the cvsnt mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook