In CVS, teams share and integrate their ongoing work in branches. Think of a branch as a shared work area that can be updated at any time by team members. In this way, individuals can work on a team project, share their work with others on the team, and access the work of others during all stages of the project. The branch effectively represents the current shared state of the project.

Resources can be changed in the Workbench without affecting the branch. Individuals must explicitly provide their changed resources to the branch.

Every CVS repository has at least one branch, referred to as HEAD. Under certain conditions, more than one branch may exist in a repository. For example, one branch may be for ongoing work, and another branch may be for maintenance work. 

As you make changes locally in your Workbench, you are working alone. When you are ready to make your local resource changes available to other team members, you'll need to commit your work to the branch. All such changes are classified as outgoing changes when you do a synchronization.

Ideally, you should update your local workspace with any changes others have made in a branch before committing to it. This ensures that you have the very latest work from the other team members. After you have updated from the branch, merged any conflicting changes in your local Workbench, and tested your changes locally, you can more easily commit your Workbench's changes to the branch.

When you commit changes to the branch, your changes are copied from your local Workbench to the branch. As a result, these changes are then seen as incoming changes when other developers update from the branch later.

Team programming with CVS
CVS Repositories
Synchronizing with a CVS repository Creating a CVS repository location
Checking out a project from a CVS repository
Sharing a new project using CVS
Synchronizing with the repository
Resolving conflicts CVS
CVS Repositories view