CVS itself is a liberal free-for-all product that can be used in a variety of ways. It is designed to provide a system for storing arbitrary files in a way that allows the change history of the individual files to be tracked. If CVS is used without any other policy the result can be a collection of files each of which has complex, multiply branched set of inter-related versions. This sort of CVS repository can be come like a library where books are simply stored in a huge heap. Although nothing is actually lost, the task of finding a coherent collection of material soon becomes impossible.
The policies we employ address tree areas
A directory within the MITGCM repository resides under either the development branch or the checkpoint branch. Files within each branch follow different policies.
Development trees are intended to be flexible areas where arbitrary files can be stored with multiple versions, many branches supporting multiple ongoing streams of development. Development trees have no policies in place to control complexity. Development trees might be associated with a particular person, a certain project or a particular special piece of work. These trees are intended to be useful areas for storing current work and for archiving partially finished work so that it doesn't get mislaid and so that some record of the development history can be easily maintained. The only policy that applies to development trees is that this style of tree is not intended to be used for providing a "checkpoint" distribution. Tagged configurations of tools built from this style of tree can be distributed, but because these trees do not have any policies regarding testing of functionality, platform coverage or documentation these trees are not allowed to form the basis of "checkpoint" distributions or formal "releases". Other policies can be defined by individuals users of these trees but there are no further global policies. The MITGCM repository development_tree/ sub-directory is reserved for holding development trees. Development trees also serve as experimental areas for exploring new code management policies.
Checkpoint trees are intended to provide structured storage areas for holding code that is intended for open distribution and is to be readily downloaded. There are policies governing the operation of these trees which are designed to ensure that distributed codes are early identified and meet certain levels of quality.
You have several options:
We advise you to only use the third option if you are confident that your own contributions to the code are bug-free, well written, documented and fool proof. :)
The policies are not enforced by any mechanism other than mutual agreement! If you think the policies are not appropriate then let us know and we can discuss changing them. However, if you simply ignore the policies regarding the checkpoint_release trees then your code may be removed and/or your access revoked.
If you have any questions or suggestions please contact the MITgcm developers at MITgcm-support@mitgcm.org