The Polaris directory structure is divided into a work area, a live area, and an archive area. The work area is where developers work on their code, the archive is where the incremental changes made to the code are saved, and the live area is where the live system is built (from the most recently checked-in code.
The work area is further sub-divided into the base work area and the pass work area. The passes are considered to be worked on by one person at a time, therefore there are no mechanisms in place for arbitrating between multiple people for them. The passes are committed via cvs when they are tested and ready to be made live.
The base, on the other hand, frequently is worked on by multiple people, so a protocol has been developed for arbitrating that style of work. There is one master base directory structure, which contains all the base source files which are tested and ready to go live. In addition, there is an identical directory structure for each developer who could work on the base. All the files in all the directories of the developer structure start out as links to the ``real'' files in the master base structure. When a developer wants to work on a file, he/she checks it out via the p-co command (for example, p-co StmtList.cc). This checks the file out with an RCS lock and copies the actual file into the developer's directory, replacing the link which was there before.
When the developer has finished modifying the file, he/she uses the p-ci command to check the file back in. This releases the RCS lock, copies the file back to the master base directory, and re-installs a link for it in the developer's directory. As long as this protocol is used, two developers cannot be working on the same file at the same time.
When a base release is tested and ready to go live, the master base directory structure is checked into the archive with cvs commit.
When a person wants to make a release of Polaris, he/she can go to the live area and copy the most recently checked-in files from the Polaris archive by doing cvs -r update in each directory structure.
A picture of the structure described may be found in the following figure.