/[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.1 by cnh, Sun Jul 2 14:44:33 2000 UTC revision 1.9 by jmc, Sat Feb 17 16:54:29 2001 UTC
# Line 1  Line 1 
1           GCMPACK CVS policies  <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
2           ====================  <html>
3    <head>
4  o Introduction     <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    This note describes policies that apply to the GCMPACK CVS repository     <meta name="Author" content="Chris Hill">
7       <title>MITgcm CVS policy</title>
8  o Why have a policy?  </head>
9    <body text="#000000" bgcolor="#FF99FF" link="#0000EF" vlink="#51188E" alink="#FF0000">
10    CVS itself is a liberal free-for-all product that can be used in a variety  
11    of ways. It is designed to provide a system for storing arbitrary files  <center>
12    in a way that allows the change history of the individual files to be  <h1>
13    tracked. If CVS is used without any other policy the result can be a  MITgcm CVS policy</h1></center>
14    collection of files each of which has complex, multiply branched set of  
15    interelated versions. This sort of CVS repository can be come like a  <h2>
16    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  Introduction</h2>
17    becomes impossible.  This note describes policies that apply to the MITGCM CVS repository.
18    <h2>
19    The policies we employ address two areas  Why have a policy?</h2>
20      1. Maintaining an orderly and easily identifiable, coherent set of  CVS itself is a liberal free-for-all product that can be used in a variety
21         evolving "products".  of ways. It is designed to provide a system for storing arbitrary files
22      2. Allowing concurrent, on-going development of products.  in a way that allows the change history of the individual files to be tracked.
23      If CVS is used without any other policy the result can be a collection
24  o Development trees and checkpoint trees  of files each of which has complex, multiply branched set of inter-related
25      versions. This sort of CVS repository can be come like a library where
26    A directory within the GCMPACK repository resides under either the  books are simply stored in a huge heap. Although nothing is actually lost,
27    development branch or the checkpoint branch. Files within each branch  the task of finding a coherent collection of material soon becomes impossible.
28    follow different policies.  <p>The policies we employ address tree areas
29      <ol>
30  o Development tree policies  <li>
31    Maintaining an orderly and easily identifiable, coherent set of evolving
32    Development trees are intended to be flexible areas where arbitrary files  "products".</li>
33    can be stored with multiple versions, many branches supporting multiple  
34    ongoing streams of development. Development trees have no policies in  <li>
35    place to control complexity. Development trees might be associated with  Allowing concurrent, on-going development of product components.</li>
36    a particular person, a certain project or a particular special piece of  
37    work. These trees are intended to be useful areas for storing current  <li>
38    work and for archiving partially finished work so that it doesn't get  Making the integration&nbsp; of achieved developments easy, rapid, organized
39    mislaid and s that some record of the development history can be easily  and clear.</li>
40    maintained. The only policy that applies to development trees is that  </ol>
41    this style of tree is not intended to be used for providing a  
42    "checkpoint" distribution. Tagged configurations of tools built from this  <h2>
43    style of tree can be distributed, but because these trees do not have any  Development trees and checkpoint trees</h2>
44    polcies regarding testing of functionality, platform coverage or  A directory within the MITGCM repository resides under either the development
45    documentation these trees are not allowed to form the basis of  branch or the checkpoint branch. Files within each branch follow different
46    "checkpoint" distrbutions or formal model releases. Other policies can  policies.
47    be defined by individuals users of these trees but there are no further  <h2>
48    global policies. The GCMPACK repository development/ subdirectory is  Development tree policies</h2>
49    reserved for holding development trees. Development trees also serve as  Development trees are intended to be flexible areas where arbitrary files
50    experimental areas for exploring new code management policies.  can be stored with multiple versions, many branches supporting multiple
51    ongoing streams of development. Development trees have no policies in place
52  o Checkpoint tree policies  to control complexity. Development trees might be associated with a particular
53    person, a certain project or a particular special piece of work. These
54    Checkpoint trees are intended to provide structured storage areas for  trees are intended to be useful areas for storing current work and for
55    holding code that is intended for open distribution and is to be readily  archiving partially finished work so that it doesn't get mislaid and so
56    downloaded. There are policies governing the operation of these trees  that some record of the development history can be easily maintained. The
57    which are designed to ensure that distributed codes are clearly  only policy that applies to development trees is that this style of tree
58    identified and meet certain levels of quality.  is not intended to be used for providing a "checkpoint" distribution. Tagged
59    configurations of tools built from this style of tree can be distributed,
60    1. Check-out  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       Just do it! Two mechanisms are available. cvsanon for read only access  the basis of "checkpoint" distributions or formal "releases". Other policies
63       and regular cvs co .... for read/write access.  can be defined by individuals users of these trees but there are no further
64    global policies. The MITGCM repository development_tree/ sub-directory
65    2. Check-in.  is reserved for holding development trees. Development trees also serve
66    as experimental areas for exploring new code management policies.
67       The code check in procedure for a "checkpoint" tree is as follows  <h2>
68       2.1  Check out the latest main branch revision.  Checkpoint tree policies</h2>
69       2.2  Merge your changes into that revision.  Checkpoint trees are intended to provide structured storage areas for holding
70       2.3  Build and validate new code.  code that is intended for open distribution and is to be readily downloaded.
71       2.4  Check that there have been no further changes to the  There are policies governing the operation of these trees which are designed
72            repository. Repeat from 2.1 if repository has changed.  to ensure that distributed codes are early identified and meet certain
73       2.5  Get clearance from other developers to check in your changes.  levels of quality.
74       2.6  Check in your changed main branch.  <ol>
75       2.8  Build and validate the new changes.  <li>
76       2.9  Tag code as "checkpointNN". Add records to docs/tag-index.  Check-out</li>
77       2.10 Build and validate test cases (see testing).  
78       2.11 Create and install checkpointNN.tar.gz  <br>Just do it! Two mechanisms are available. cvsanon for read only access
79    and regular cvs co .... for read/write access.
80    3. Testing  <li>
81    Check-in</li>
82    4. Checkpoint tagging  
83    <br>The code check in procedure for a "checkpoint" tree is as follows
84    5. Release tagging  <ol>
85    <li>
86    6. Branches  Check out the latest main branch revision.</li>
87    
88       Branches are to be used for bug-fixes and code patches to releases  <li>
89       only. All other changes e.g. totally new features, bug-fixes to  Merge your changes into that revision.</li>
90       checkpoints are introduced by moving checkpoint levels forward. The  
91       only historical code maintenance that is employed is for fixes and  <li>
92       patches to formal releases - not checkpoints.  Build and validate new code.</li>
93    
94  o These policies are causing me a big problem, what can I do?  <li>
95    Check that there have been no further changes to the repository. Repeat
96    The policies are not enforced by any mechanism other than mutual  from 2.1 if repository has changed.</li>
97    agreement! If you think the policies are not appropriate then let us know  
98    and we can discuss changing them. However, if you simply ignore the  <li>
99    policies regarding the checkpoint_release trees then your code may be  Get clearance from other developers to check in your changes.</li>
100    removed and/or your access revoked.  
101    <li>
102  o What about bitkeeper  Check in your changed main branch.</li>
103    
104    We are looking at bitkeeper (www.bitkeeper.com). It looks cool, but  <li>
105    policies are still important. Any experience, suggestions let us know.  Build and validate the new changes.</li>
106    Watch this space!  
107    <li>
108  Questions, comments e-mail: gcmpack.code.czars@mitgcm.org  Tag code as "checkpointNN". Add records to docs/tag-index.</li>
109    
110    <li>
111    Build and validate test cases (see testing).</li>
112    
113    <li>
114    Create and install checkpointNN.tar.gz</li>
115    </ol>
116    
117    <li>
118    Testing</li>
119    
120    <br>Things in a checkpoint tree require a test case that can be used to
121    validate the component.
122    <li>
123    Checkpoint tagging</li>
124    
125    <br>No code should be left in limbo (un-tagged) for extended periods. On
126    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    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    sometimes takes more than two weeks to achieve. Obviously, in this case
131    a bi-weekly checkpoint would not be useful.
132    <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    <h1>
151    Someone checked-in broken code so not my code doesn't work?</h1>
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    
197    </body>
198    </html>

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22