|collections = patternlist|
|Clients in this class will only be able to access collections that are matched by the pattern list. Other collections will be treated as if they did not exist.|
|collection-dirs = patternlist|
Clients in this class will only be able to access collections in
subdirectories matched by the pattern list.
Other collections will be treated as if they did not exist.
These subdirectories are relative to the servers base directory. By default the server looks for collections in a single subdirectory sup, but a list of subdirectories can be specified on the command line with the -c option. The collection-dirs specification is applied to that list. In other words, collection-dirs can be used to eliminate certain subdirectories for a given class, but it cannot be used to add new subdirectories which were not specified on the command line.
The remaining attributes apply only to collections containing RCS files:
|branches = patternlist|
Only branches matched by the pattern list will be visible to
clients in this class.
Valid branch names are all special CVS branch tags and the
which specifies the main branch of the revision tree.
|branches/ collection = patternlist|
.Sm on This attribute can be used to further refine the branches specification for a specific collection. The given pattern list is appended to the end of the branches pattern list, and the result is used to control which branches are visible in the specified collection. Note: collection must be the exact name of a collection; it is not a pattern.
|tags = patternlist|
Only tags matched by the pattern list will be visible to clients in
|tags/ collection = patternlist|
.Sm on This attribute can be used to further refine the tags specification for a specific collection. The given pattern list is appended to the end of the tags pattern list, and the result is used to control which tags are visible in the specified collection. Note: collection must be the exact name of a collection; it is not a pattern.
|opaque-collections = patternlist|
All collections matched by the pattern list will be treated as
In an opaque collection, certain branches and tags are hidden from the
Normally the opaque collections are determined automatically, based on the values of other attributes. The opaque-collections attribute is provided for completeness, but it is not expected to be needed.
Finally, each class specification may contain this attribute:
|default = class|
Any attributes not specified for the current class will be copied
from the class named by the
The named class must have already been defined earlier in the
file; forward references are not allowed.
If a class has no default attribute specification, its defaults are taken from the class named default. The default class may be defined in cvsupd.class as the first entry in the file. If it is missing, the server provides a default class which gives free access to all collections, equivalent to the following:
default:\ :collections=*:\ :collection-dirs=*:\ :branches=*:\ :tags=*:\ :opaque-collections=!*:
The implementation of the class concept is currently contained completely in the CVSup server cvsupd. Information about hidden collections and non-visible branches of partially hidden collections is never communicated to the client. For partially hidden RCS files, the server pretends not to know anything about deltas, tags, and branches that are not visible for the client.
Due to the structure of RCS files, it is only possible to hide parts of branches from the branch point on the main trunk to the tip of the branch onwards, and the top part of the main trunk (on which no other exported branches may reside).
When the export status of a collection changes, the client will not get any new deltas that werent visible to it before by default, because the file attributes (including the modification time) will probably not have changed. Thus in these cases it is necessary to force the server to perform a complete detailed comparison of all RCS files. As currently no meta-information about the export status of collections is kept at the client, there is no way to automate this procedure. As a workaround, both the client and the server have been extended to recognize the -x command line option, which enforces the complete compare. The option only needs to be given to the server or the client, not to both.
If the cvsupd.class file changes, the server needs not to be restarted or informed via a signal; the new information will automatically be used for the next client connection.
/usr/local/etc/cvsup Default base directory. /usr/local/etc/cvsup/cvsupd.class Client class based access rights/restrictions /usr/local/etc/cvsup/cvsupd.access Network/host based access rights/restrictions /usr/local/etc/cvsup/cvsupd.passwd CVSup password database
The following example grants default access to all collections containing the string pub in their names as well as to the src-base collection:default:\ :collections=*pub*,src-base:\ :branches=*:\ :tags=*:
In the next example, all collections except those whose names begin with pr_ and ex_ are exported by default:default:\ :collections=!pr_*,!ex_*:
Here is a specification for a guest class that exports all collections whose names contain only letters. Access to these collections is unrestricted, except for the collection flash, from which only the stable release branches and corresponding tags are exported:guest:\ :collections=+[A-Za-z]*:\ :branches=*:\ :tags=*:\ :branches/flash=!*,release_flash_?_?_stable:
co(1), cvpasswd(1), cvs(1), cvsup(1), cvsupd(8), cvsupd.passwd(5).
.An John Polstra Aq email@example.com ,
.An Olaf Wagner Aq firstname.lastname@example.org .
- Checkout mode for partially hidden collections is currently not implemented.
- In exact mode (which is no more cleared by default for partially hidden collections) the algorithm used for tags often leads to unnecessary delete tag/add tag sequences when the export status of tags and/or branches changes.
- Probably many more as the implementation has not been extensively tested yet.