Each module is stored in a central repository, also called a source tree. In order to use or modify the sources within a module, a developer must first check out a working copy of the module from the central repository. The diagram below illustrates the difference between a source tree and a working copy:
Here, the central repository contains a directory called proj, which contains files and subdirectories. Each file under proj is an RCS file (i.e., a file whose extension is ,v). A user, Joe, would not edit these files directly, but rather would check out his own working copy, which would be located (for example) in /user/joe/proj. Note that /user/joe/proj contains files and subdirectories that correspond to those in proj; however, the files are not RCS files. Moreover, each directory in the working copy contains a directory called CVS, which contains information used by CVS to keep the working copy in synch with the source tree.
CVS is a huge system with lots of command-line options; however, we usually only need a small subset of this functionality to manage sources. There are five commands you need to know:
alias research="cvs -d /user/stire/Mastermind/Tree"
This will let you type:research checkout PTL_DNF
to create local copy of the module in your working directory. Likewise, you can type:
research commit
research update
research add file
What follows is a usage scenario. Let's say that you and I both have local copies of the directory PTL_DNF that we created by doing:
research checkout PTL_DNF
If I make a change to the file foo.cc in my local copy, I can type:research commit foo.cc
or just:research commit
to publish my local changes in the central repository. To get these changes, you would then need to type:research update
to update your local copy with my changes. If I add a file bar.h to my local copy, I would do the following:
research add bar.h
research commit
If I add a new directory to the central repository, then you will need to type:
research update -d
as opposed to just:research update
Finally, to release a module, cd into the directory that contains the root of the module (PTL_DNF in this example) and then type:research release -d PTL_DNF
The ``-d'' says to delete the directory PTL_DNF after the module is released.