This section explains how streams are used with a CVS repository. There are a few particularities that should be explained:
Streams map to branches in CVS. The CVS repository always has a default branch called HEAD. This is the main trunk in the repository.
There is no easy way to query a CVS repository for all existing streams. This means that when a repository connection is made to a CVS repository, only HEAD will be shown. Creation of a new stream in the repository view can be viewed as defining a stream name. The underlying CVS branch is not created until you explicitly copy a project version or release contents to the stream. This is a particularity of CVS. Stream name definitions are persisted between workspace sessions until explicitly removed within the repository view.
Advanced CVS users can use the resource history view to see existing branch tags. All CVS tags are displayed in brackets to the right of the revision number (e.g. 1.2 (v1, merge1, v2)). Since streams are created as branch tags in CVS you can view the existing branch tags from a file's history then create a stream by that name to access an existing branch.
There is no easy way in CVS of determining if a project is part of branch, other than examining all files in the project for the appropriate branch tag. Consequently, when you create a new stream, the names of all existing projects in the repository will show up as children of the stream node in the repository browser tree.
Removing a stream from the repository browser can be viewed as removing the definition from the workbench. The underlying CVS branch is left untouched.
Since streams represent a basic service provided by CVS, their usage patterns (for example when and why to use them) are well defined in CVS specific documentation regarding branches.