Prisma has used cvs since December, 1988. It has evolved to meet our specific needs of revision and release control. We will make our code freely available so that others can benefit from our work, and can enhance cvs to meet broader needs yet.
Many of the other software release and revision control systems, like the one described in [Glew], appear to use a collection of tools that are geared toward specific environments -- one set of tools for the kernel, one set for ``generic'' software, one set for utilities, and one set for kernel and utilities. Each of these tool sets apparently handle some specific aspect of the problem uniquely. cvs took a somewhat different approach. File sharing through symbolic or hard links is not addressed; instead, the disk space is simply burned since it is ``cheap.'' Support for producing objects for multiple architectures is not addressed; instead, a parallel checked-out source tree must be used for each architecture, again wasting disk space to simplify complexity and ease of use -- punting on this issue allowed Makefiles to remain unchanged, unlike the approach taken in [Mahler], thereby maintaining closer compatibility with the third-party vendor sources. cvs is essentially a source-file server, making no assumptions or special handling of the sources that it controls. To cvs:
A source is a source, of course, of course, unless of course the source is Mr. Ed.[note 6]
Sources are maintained, saved, and retrievable at any time based on symbolic or numeric revision or date in the past. It is entirely up to cvs wrapper programs to provide for release environments and such.
The major advantage of cvs over the many other similar systems that have already been designed is the simplicity of cvs. cvs contains only three programs that do all the work of release and revision control, and two manually-maintained administrative files for each source repository. Of course, the deciding factor of any tool is whether people use it, and if they even like to use it. At Prisma, cvs prevented members of the kernel group from killing each other.