/[MITgcm]/mitgcm.org/cvspolicy.html
ViewVC logotype

Diff of /mitgcm.org/cvspolicy.html

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by cnh, Sun Jul 2 14:56:16 2000 UTC revision 1.10 by jmc, Sat Feb 17 17:08:40 2001 UTC
# Line 1  Line 1 
1    <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
2  <html>  <html>
3  <head>  <head>
4       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5       <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.4.1 i686) [Netscape]">
6       <meta name="Author" content="Chris Hill">
7       <title>MITgcm CVS policy</title>
8  </head>  </head>
9  <body>  <body text="#000000" bgcolor="#FF99FF" link="#0000EF" vlink="#51188E" alink="#FF0000">
10           GCMPACK CVS policies  
11           ====================  <center>
12    <h1>
13  o Introduction  MITgcm CVS policy</h1></center>
14    
15    This note describes policies that apply to the GCMPACK CVS repository  <h2>
16    Introduction</h2>
17  o Why have a policy?  This note describes policies that apply to the MITGCM CVS repository.
18    <h2>
19    CVS itself is a liberal free-for-all product that can be used in a variety  Why have a policy?</h2>
20    of ways. It is designed to provide a system for storing arbitrary files  CVS itself is a liberal free-for-all product that can be used in a variety
21    in a way that allows the change history of the individual files to be  of ways. It is designed to provide a system for storing arbitrary files
22    tracked. If CVS is used without any other policy the result can be a  in a way that allows the change history of the individual files to be tracked.
23    collection of files each of which has complex, multiply branched set of  If CVS is used without any other policy the result can be a collection
24    interelated versions. This sort of CVS repository can be come like a  of files each of which has complex, multiply branched set of inter-related
25    library where books are simply stored in a huge heap. Although nothing is  versions. This sort of CVS repository can be come like a library where
26    actually lost, the task of finding a coherent collection of material soon  books are simply stored in a huge heap. Although nothing is actually lost,
27    becomes impossible.  the task of finding a coherent collection of material soon becomes impossible.
28    <p>The policies we employ address tree areas
29    The policies we employ address two areas  <ol>
30      1. Maintaining an orderly and easily identifiable, coherent set of  <li>
31         evolving "products".  Maintaining an orderly and easily identifiable, coherent set of evolving
32      2. Allowing concurrent, on-going development of products.  "products".</li>
33      
34  o Development trees and checkpoint trees  <li>
35      Allowing concurrent, on-going development of product components.</li>
36    A directory within the GCMPACK repository resides under either the  
37    development branch or the checkpoint branch. Files within each branch  <li>
38    follow different policies.  Making the integration&nbsp; of achieved developments easy, rapid, organized
39      and clear.</li>
40  o Development tree policies  </ol>
41    
42    Development trees are intended to be flexible areas where arbitrary files  <h2>
43    can be stored with multiple versions, many branches supporting multiple  Development trees and checkpoint trees</h2>
44    ongoing streams of development. Development trees have no policies in  A directory within the MITGCM repository resides under either the development
45    place to control complexity. Development trees might be associated with  branch or the checkpoint branch. Files within each branch follow different
46    a particular person, a certain project or a particular special piece of  policies.
47    work. These trees are intended to be useful areas for storing current  <h2>
48    work and for archiving partially finished work so that it doesn't get  Development tree policies</h2>
49    mislaid and s that some record of the development history can be easily  Development trees are intended to be flexible areas where arbitrary files
50    maintained. The only policy that applies to development trees is that  can be stored with multiple versions, many branches supporting multiple
51    this style of tree is not intended to be used for providing a  ongoing streams of development. Development trees have no policies in place
52    "checkpoint" distribution. Tagged configurations of tools built from this  to control complexity. Development trees might be associated with a particular
53    style of tree can be distributed, but because these trees do not have any  person, a certain project or a particular special piece of work. These
54    polcies regarding testing of functionality, platform coverage or  trees are intended to be useful areas for storing current work and for
55    documentation these trees are not allowed to form the basis of  archiving partially finished work so that it doesn't get mislaid and so
56    "checkpoint" distrbutions or formal model releases. Other policies can  that some record of the development history can be easily maintained. The
57    be defined by individuals users of these trees but there are no further  only policy that applies to development trees is that this style of tree
58    global policies. The GCMPACK repository development/ subdirectory is  is not intended to be used for providing a "checkpoint" distribution. Tagged
59    reserved for holding development trees. Development trees also serve as  configurations of tools built from this style of tree can be distributed,
60    experimental areas for exploring new code management policies.  but because these trees do not have any policies regarding testing of functionality,
61    platform coverage or documentation these trees are not allowed to form
62  o Checkpoint tree policies  the basis of "checkpoint" distributions or formal "releases". Other policies
63    can be defined by individuals users of these trees but there are no further
64    Checkpoint trees are intended to provide structured storage areas for  global policies. The MITGCM repository development_tree/ sub-directory
65    holding code that is intended for open distribution and is to be readily  is reserved for holding development trees. Development trees also serve
66    downloaded. There are policies governing the operation of these trees  as experimental areas for exploring new code management policies.
67    which are designed to ensure that distributed codes are clearly  <h2>
68    identified and meet certain levels of quality.  Checkpoint tree policies</h2>
69    Checkpoint trees are intended to provide structured storage areas for holding
70    1. Check-out  code that is intended for open distribution and is to be readily downloaded.
71    There are policies governing the operation of these trees which are designed
72       Just do it! Two mechanisms are available. cvsanon for read only access  to ensure that distributed codes are early identified and meet certain
73       and regular cvs co .... for read/write access.  levels of quality.
74    <ol>
75    2. Check-in.  <li>
76    Check-out</li>
77       The code check in procedure for a "checkpoint" tree is as follows  
78       2.1  Check out the latest main branch revision.  <br>Just do it! Two mechanisms are available. cvsanon for read only access
79       2.2  Merge your changes into that revision.  and regular cvs co .... for read/write access.
80       2.3  Build and validate new code.  <li>
81       2.4  Check that there have been no further changes to the  Check-in</li>
82            repository. Repeat from 2.1 if repository has changed.  
83       2.5  Get clearance from other developers to check in your changes.  <br>The code check in procedure for a "checkpoint" tree is as follows
84       2.6  Check in your changed main branch.  <ol>
85       2.8  Build and validate the new changes.  <li>
86       2.9  Tag code as "checkpointNN". Add records to docs/tag-index.  Check out the latest main branch revision.</li>
87       2.10 Build and validate test cases (see testing).  
88       2.11 Create and install checkpointNN.tar.gz  <li>
89    Merge your changes into that revision.</li>
90    3. Testing  
91    <li>
92       Things in a checkpoint tree require a test case that  Build and validate new code.</li>
93       can be used to validate the component.  
94    <li>
95    4. Checkpoint tagging  Check that there have been no further changes to the repository. Repeat
96    from 2.1 if repository has changed.</li>
97       No code should be left in limbo. Checking in code and then  
98       leaving it in the repository untagged is bad. When you check  <li>
99       in code you are creating a new checkpoint. That means you don't  Get clearance from other developers to check in your changes.</li>
100       check in some code which you "know" works 100% and then go away  
101       for two weeks. When you start checking in code you make sure  <li>
102       you have time to do the process end-to-end as described in section  Check in your changed main branch.</li>
103       2.  
104    <li>
105    5. Release tagging  Build and validate the new changes.</li>
106    
107       Releases are only based on checkpoint tree code. Maintenance fixes  <li>
108       to releases are also maintained within the checkpoint tree. Files  Tag code as "checkpointNN". Add records to docs/tag-index.</li>
109       within a release must have accompanying documentation. The form of this  
110       documentation depends on the file type.  <li>
111    Build and validate test cases (see testing).</li>
112    6. Branches  
113    <li>
114       Branches are to be used for bug-fixes and code patches to releases  Create and install checkpointNN.tar.gz</li>
115       only. All other changes e.g. totally new features, bug-fixes to  </ol>
116       checkpoints are introduced by moving checkpoint levels forward. The  
117       only historical code maintenance that is employed is for fixes and  <li>
118       patches to formal releases - not checkpoints.  Testing</li>
119    
120  o These policies are causing me a big problem, what can I do?  <br>Things in a checkpoint tree require a test case that can be used to
121    validate the component.
122    The policies are not enforced by any mechanism other than mutual  <li>
123    agreement! If you think the policies are not appropriate then let us know  Checkpoint tagging</li>
124    and we can discuss changing them. However, if you simply ignore the  
125    policies regarding the checkpoint_release trees then your code may be  <br>No code should be left in limbo (un-tagged) for extended periods. On
126    removed and/or your access revoked.  the other hand it's unnecessary to create a checkpoint tag for every little
127    change. Checkpoint tags should be made after a particularly significant
128  o What about bitkeeper  code modification or otherwise on a regular basis, say bi-weekly. Very
129    often we set a list of goals to be reached by the next checkpoint which
130    We are looking at bitkeeper (www.bitkeeper.com). It looks cool, but  sometimes takes more than two weeks to achieve. Obviously, in this case
131    policies are still important. Any experience, suggestions let us know.  a bi-weekly checkpoint would not be useful.
132    Watch this space!  <li>
133    Release tagging</li>
134    
135    <br>Releases are only based on checkpoint tree code. Maintenance fixes
136    to releases are also maintained within the checkpoint tree. Files within
137    a release must have accompanying documentation. The form of this documentation
138    depends on the file type.
139    <li>
140    Branches</li>
141    
142    <br>Branches are a useful tool for making changes prior to checkpoints
143    without breaking other working versions but it must be understood that
144    branches are short-lived and that releases and checkpoints not be made
145    from a branch. Branches are especially useful for adding totally
146    <br>new features. bug-fixes to checkpoints are introduced by moving checkpoint
147    levels forward. The only historical code maintenance that s employed is
148    for fixes and patches to formal releases - not checkpoints.</ol>
149    
150    <h2>
151    Someone checked-in broken code so not my code doesn't work?</h2>
152    You have several options:
153    <ol>
154    <li>
155    Politely email everyone at support@mitgcm.org asking what&nbsp; has happened
156    and that it be fixed?</li>
157    
158    <li>
159    Figure out why the new code is broken, fix it, check it in and proudly
160    send a message to support@mitgcm.org to show how constructive you are.</li>
161    
162    <li>
163    Complain that the quality of work is too low and then do nothing to fix
164    the code.<br>
165    <BR></li>
166    
167    <br>We advise you to only use the third option if you are confident that
168    your own contributions to the code are bug-free, well written, documented
169    and fool proof.&nbsp; :)</ol>
170    
171    <h2>
172    These policies are causing me a big problem, what can I do?</h2>
173    The policies are not enforced by any mechanism other than mutual agreement!
174    If you think the policies are not appropriate then let us know and we can
175    discuss changing them. However, if you simply ignore the policies regarding
176    the checkpoint_release trees then your code may be removed and/or your
177    access revoked.
178    <h2>
179    What about bitkeeper</h2>
180    We are looking at bitkeeper (www.bitkeeper.com). It looks cool, but policies
181    are still important. Any experience, suggestions let us know. Watch this
182    space!
183    <p>Questions, comments e-mail: code.czars@mitgcm.org
184    <br>
185    <hr WIDTH="100%">
186    <table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" NOSAVE >
187    <tr NOSAVE>
188    <td><font size=-1>Last modified on $Date$</font></td>
189    
190    <td>
191    <div align=right><font size=-1>CVS:  /u/gcmpack/mitgcm.org/../cvspolicy.html,v
192    $Revision$</font></div>
193    </td>
194    </tr>
195    </table>
196    
 Questions, comments e-mail: gcmpack.code.czars@mitgcm.org  
197  </body>  </body>
198  </html>  </html>

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22