CVS is a version control system (with some additional configuration management functionality). It maintains a central repository which stores files (often source code), including past versions, information about who modified them and when, and so on. People who wish to look at or modify those files, known as developers, use CVS to check out a working directory from the repository, to check in new versions of files to the repository, and other operations such as viewing the modification history of a file. If developers are connected to the repository by a network, particularly a slow or flaky one, the most efficient way to use the network is with the CVS-specific protocol described in this document.
Developers, using the machine on which they store their working directory, run the CVS client program. To perform operations which cannot be done locally, it connects to the CVS server program, which maintains the repository. For more information on how to connect see Chapter 4, How to Connect to and Authenticate Oneself to the CVS server .
This document describes the CVS protocol. Unfortunately, it does not yet completely document one aspect of the protocol--the detailed operation of each CVS command and option--and one must look at the CVS user documentation, cvs.texinfo, for that information. The protocol is non-proprietary (anyone who wants to is encouraged to implement it) and an implementation, known as CVS, is available under the GNU Public License. The CVS distribution, containing this implementation, cvs.dbk, and a copy (possibly more or less up to date than what you are reading now) of this document, cvsclient.dbk, can be found at cvsnt.org web server.
This is version 2.0.41 of the protocol specification. This version number is intended only to aid in distinguishing different versions of this specification. Although the specification is currently maintained in conjunction with the CVS implementation, and carries the same version number, it also intends to document what is involved with interoperating with other implementations (such as other versions of CVS); see the section called “Required versus optional parts of the protocol ”. This version number should not be used by clients or servers to determine what variant of the protocol to speak; they should instead use the valid-requests and Valid-responses mechanism (Chapter 7, The CVS client/server protocol ), which is more flexible.