Required versus optional parts of the protocol

The following are part of every known implementation of the CVS protocol (except obsolete, pre-1.5, versions of CVS) and it is considered reasonable behavior to completely fail to work if you are connected with an implementation which attempts to not support them. Requests: Root, Valid-responses, valid-requests, Directory, Entry, Modified, Unchanged, Argument, Argumentx, ci, co, update. Responses: ok, error, Valid-requests, Checked-in, Updated, Merged, Removed, M, E.

A server need not implement Repository, but in order to interoperate with CVS 1.5 through 1.9 it must claim to implement it (in Valid-requests). The client will not actually send the request.