B.1. CVS Variants
The CVS license allows you to modify the CVS code and distribute the modified code (read the license for the exact requirements). Several variants, described in the following sections, are provided by developers who have produced expansions of CVS for specific purposes.
CVS/MVS is a port of CVS for the MVS (Multiple Virtual Storage) mainframe operating system, also known as OS/390 and zOS. CVS/MVS requires MVS with POSIX configured, and the HFS (Heirarchical File System).
CVS/MVS is a port of both the server and the command-line client.
CVS/MVS is available at http://dccmn.com/cvsmvs/.
cvs-nserver is a rewrite of the CVS network code, to allow support for SSL (Secure Sockets Layer) tunneling and ACLs (Access Control Lists), among other features. ACLs are available in CVS as an added piece of code (see "cvs_acls" later in this chapter) but are native to cvs-nserver. The authentication is also separated out from the main code in cvs-nserver, to make security audits easier and to include PAM (Pluggable Authentication Modules) availability in the code. cvs-nserver is available at http://cvs-nserver.sourceforge.net/.
CVSNT is an alternative CVS server for Windows (NT, 2000, XP, and 2003), Unix, Linux, OS/400, and Mac OS X. It includes a graphic client as well as the server, and can be used with some of the integration tools described in Appendix A.
As well as running on Windows operating systems, CVSNT provides an additional access method, sspi, that authenticates using Windows domain passwords. The company which makes it provides a free open source version, and also provides packages which contain the free code, additional code and documentation, and commercial support. CVSNT is available at http://www.march-hare.com/cvspro/.
The developers of DCVS wanted to create a CVS with distributed repositories native to the code. They released version 1.0 in November last year (2005), and included the main CVS code and features up to version 1.12.12.
The distribution system makes DCVS specialit relies on change sets, and each change set is maintained on a particular repository. Read operations are performed on the local repository, write operations on the repository responsible for the particular change set. DCVS automatically synchronizes the repositories. DCVS is available from http://dcvs.elegosoft.com.
Meta-CVS is an expansion of CVS that adds versioning for directories, supports symbolic links and file metadata, automatically sets the keyword-expansion mode for certain file types (such as .png files) to binary, and improves the user interface for branching and merging. It also improves the way CVS handles file addition and removal conflicts and changes the way vendor branches are used.
Meta-CVS is a variation of the client code and operates from a standard CVS repository. It changes the data stored in the repository, so you can't have a team on the same project with a mixture of Meta-CVS and standard CVS users. Meta-CVS is available from http://users.footprints.net/~kaz/mcvs.html.
The OpenCVS development team states as its goals to maintain files as compatible as possible to the main CVS development stream, to be as secure as possible, and to improve access control to repository files. OpenCVS is available from http://www.opencvs.org.
B.1.7. RISC OS CVS ports
There are two ports of CVS to the RISC OS. These are available from http://acorn.cybervillage.co.uk/cvs/ and http://home.student.utwente.nl/m.m.bezemer/cvsuk.html.