The release tools can very naturally be divided into two sets: those that are used for source code management and those that are used to build libraries and executables from the source code. These two sets are quite separated: the tools that are used for managing source code are not used for building it, and vice versa. Understanding the purpose and the scope of each of the tools is very important for effective development. In particular, one should recall that these tools will each be used for small, well-defined subtasks, and mostly from the command line.
When dealing with source code, users mostly work with the CVS commands; few release tools are used at this point. There is a single version management repository for all the users and all the code in the entire project. Developers and the software librarian check out partial snapshots out of this repository into their own working areas. Modifications to the files in the working area are committed back into the repository by explicit commands issued by the developers. Once the changes have been committed, other developers can update their local working copies using other CVS commands.
So far, the release tools have not been involved at all. They begin to be used when the software librarian checks out the code from the repository to build and freeze an official release. Developers use the release tools to indicate which frozen official release they want to base their developments on. This, and the tools used by the librarian to prepare the releases, are the only instances of using the release tools for source code managment. The rest of the management aspects are performed using the CVS tools.
Figure 4-1, ``Source Code Management Tools'' illustrates some of the source code management aspects and what tools are used in each context.