Copyright 2002 Alexander Taler

Language Independent Interface for the CVS client protocol

This is a thin layer over the CVS Client Protocol. It should provide all of the functionality of that protocol, without warping it. It provides some enforcement to ensure that the protocol is being used correctly, and some extra functionality to make using the protocol more easier.

Basic Classes


The main class which represents the client end of the connection. You submit requests to it and it returns responses. To create it, a CVSConnection is required.

connect, disconnect, initRepository

connect() issues the following standard requests: valid-requests, Valid-responses, Root and UseUnchanged. For this reason, initRepository must be called when the client is not connected, because it is not compatible with the Root request.

getValidResponses, setValidResponses, getValidRequests

These routines provide the a way to manage the valid requests and responses for a particular client session. The Client has an initial list of valid responses which are those supported by the library itself. The user of the library may further reduce that list through setValidResponses(), which must be called before the client is connected.

After the client is connected, getValidRequests() will return a list of the requests which the server supports. This list could well be different from the list supported by the library.


Connection class used by CVSClient. This is a generic superclass for multiple possible connection types, and it can't establish a connection itself. A specifc CVSConnection must be used to actually establish a connection.


Superclass for the many CVSRequests. A request is constructed with any data which it will send to the server. Once the request is created it should be sent to the server via the Client->submitRequest() routine. Each request requires certain pieces of data to be sent with it. The request class can be queried for the types of the data it requires. When submitted, some requests will elicit a response from the server and otheres will not.


Superclass for the many CVSResponses. Each response includes a set of data; whose types are specified by includedData(). The terminal responses are "ok" and "error", and they signal the end of a batch of responses from the server.

Specific CVS Connections


A connection to an invocation of cvs as "cvs server" on the local machine. No authentication information is required.


An Ext connection can use any number of connection and authentication protocols, by invoking the exectuble specified by CVS_RSH, typically rsh or ssh. It will probably make sense to create CVSConnectionSSH and CVSConnectionSSH and have this call them.


A connection to a pserver on the network.

Specific CVS Requests

There are many more CVSRequests.


Specific CVS Responses

There are many more CVSResponses.