| 1 | 
adcroft | 
1.1 | 
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> | 
| 2 | 
  | 
  | 
<html> | 
| 3 | 
  | 
  | 
<head> | 
| 4 | 
  | 
  | 
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | 
| 5 | 
  | 
  | 
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.14-5.0 i686) [Netscape]"> | 
| 6 | 
  | 
  | 
</head> | 
| 7 | 
  | 
  | 
<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> | 
| 8 | 
  | 
  | 
 | 
| 9 | 
  | 
  | 
<center> | 
| 10 | 
  | 
  | 
<h1> | 
| 11 | 
  | 
  | 
Obtaining MITgcmUV source using CVS</h1></center> | 
| 12 | 
  | 
  | 
 | 
| 13 | 
  | 
  | 
<h2> | 
| 14 | 
  | 
  | 
Environment</h2> | 
| 15 | 
  | 
  | 
 | 
| 16 | 
  | 
  | 
<blockquote> | 
| 17 | 
  | 
  | 
<pre>setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/u0/gcmpack | 
| 18 | 
  | 
  | 
cvs login ( CVS password: cvsanon )</pre> | 
| 19 | 
  | 
  | 
</blockquote> | 
| 20 | 
  | 
  | 
You only need to do "cvs login" once but the environment should be set | 
| 21 | 
  | 
  | 
in you .cshrc or .tcshrc. | 
| 22 | 
  | 
  | 
<h2> | 
| 23 | 
  | 
  | 
To obtain the latest source (with CVS information)</h2> | 
| 24 | 
  | 
  | 
 | 
| 25 | 
  | 
  | 
<blockquote> | 
| 26 | 
adcroft | 
1.2 | 
<pre>cvs co -d <i>directory</i> -P models/MITgcmUV</pre> | 
| 27 | 
adcroft | 
1.1 | 
</blockquote> | 
| 28 | 
  | 
  | 
This creates a directory called <i>directory</i>. If <i>directory</i> already | 
| 29 | 
  | 
  | 
exists this command updates your code based on the repository (see "Getting | 
| 30 | 
  | 
  | 
updates from the repository" below). Each directory in the source tree | 
| 31 | 
  | 
  | 
with contain a directory "CVS". This contains information required by CVS | 
| 32 | 
  | 
  | 
to keep track of your file versions with respect to the repository. <i>Don't | 
| 33 | 
  | 
  | 
edit the files in CVS</i>. | 
| 34 | 
  | 
  | 
<h2> | 
| 35 | 
  | 
  | 
Show changes that YOU have made</h2> | 
| 36 | 
  | 
  | 
If you are running into difficulties it is very useful to see the changes | 
| 37 | 
  | 
  | 
that you yourself have made since obtaining the code. | 
| 38 | 
  | 
  | 
<br>From within your working directory: | 
| 39 | 
  | 
  | 
<blockquote> | 
| 40 | 
  | 
  | 
<pre>cvs diff</pre> | 
| 41 | 
  | 
  | 
</blockquote> | 
| 42 | 
  | 
  | 
will show the differences between your version and the version that you | 
| 43 | 
  | 
  | 
checked out. It acts recursively on all directories below your current | 
| 44 | 
  | 
  | 
directory. You can limit the operation to just one file or directory by | 
| 45 | 
  | 
  | 
specifying those as arguments: | 
| 46 | 
  | 
  | 
<blockquote> | 
| 47 | 
  | 
  | 
<pre>cvs diff <i>file</i></pre> | 
| 48 | 
  | 
  | 
</blockquote> | 
| 49 | 
  | 
  | 
 | 
| 50 | 
  | 
  | 
<h2> | 
| 51 | 
  | 
  | 
Show changes to the repository that you don't have</h2> | 
| 52 | 
  | 
  | 
The source code evolves continuously and you should try to stay up to date. | 
| 53 | 
  | 
  | 
To see what needs to be updated: | 
| 54 | 
  | 
  | 
<blockquote> | 
| 55 | 
  | 
  | 
<pre>cvs -n update</pre> | 
| 56 | 
  | 
  | 
</blockquote> | 
| 57 | 
  | 
  | 
behaves just as "cvs update" but doesn't actually change anything. This | 
| 58 | 
  | 
  | 
is a useful way of summarizing the state | 
| 59 | 
  | 
  | 
<br>of your code. The meaning of the output is summarized in the next topic. | 
| 60 | 
  | 
  | 
<h2> | 
| 61 | 
  | 
  | 
Getting updates from the repository</h2> | 
| 62 | 
  | 
  | 
You can download and merge updates from the repository to bring you working | 
| 63 | 
  | 
  | 
code up to date: | 
| 64 | 
  | 
  | 
<blockquote> | 
| 65 | 
  | 
  | 
<pre>cvs update</pre> | 
| 66 | 
  | 
  | 
</blockquote> | 
| 67 | 
  | 
  | 
will work recursively on all files in the current directory and below. | 
| 68 | 
  | 
  | 
To update just a specific file or | 
| 69 | 
  | 
  | 
<br>directory: | 
| 70 | 
  | 
  | 
<blockquote> | 
| 71 | 
  | 
  | 
<pre>cvs update <i>file</i></pre> | 
| 72 | 
  | 
  | 
</blockquote> | 
| 73 | 
  | 
  | 
"cvs update" produces output to the terminal with the following meanings: | 
| 74 | 
  | 
  | 
<br>  | 
| 75 | 
  | 
  | 
<table BORDER CELLPADDING=3 WIDTH="80%" NOSAVE > | 
| 76 | 
  | 
  | 
<tr ALIGN=LEFT VALIGN=TOP NOSAVE> | 
| 77 | 
  | 
  | 
<td NOSAVE>U <i>file</i></td> | 
| 78 | 
  | 
  | 
 | 
| 79 | 
  | 
  | 
<td>indicates that <i>file</i> was brought up to date with the repository | 
| 80 | 
  | 
  | 
or that it exists in the repository but not in your work space.</td> | 
| 81 | 
  | 
  | 
</tr> | 
| 82 | 
  | 
  | 
 | 
| 83 | 
  | 
  | 
<tr> | 
| 84 | 
  | 
  | 
<td>P <i>file</i></td> | 
| 85 | 
  | 
  | 
 | 
| 86 | 
  | 
  | 
<td>does exactly as above but uses the "patch" method.</td> | 
| 87 | 
  | 
  | 
</tr> | 
| 88 | 
  | 
  | 
 | 
| 89 | 
  | 
  | 
<tr ALIGN=LEFT VALIGN=TOP> | 
| 90 | 
  | 
  | 
<td ALIGN=LEFT VALIGN=TOP>M <i>file</i></td> | 
| 91 | 
  | 
  | 
 | 
| 92 | 
  | 
  | 
<td>means the <i>file</i> was modified in your work space. Any additional | 
| 93 | 
  | 
  | 
changes from the repository were merged in successfully.</td> | 
| 94 | 
  | 
  | 
</tr> | 
| 95 | 
  | 
  | 
 | 
| 96 | 
  | 
  | 
<tr> | 
| 97 | 
  | 
  | 
<td>C <i>file</i></td> | 
| 98 | 
  | 
  | 
 | 
| 99 | 
  | 
  | 
<td>means a merge is necessary because both the your copy and the repository | 
| 100 | 
  | 
  | 
have changed <b>but</b> there is a conflict between the changes.</td> | 
| 101 | 
  | 
  | 
</tr> | 
| 102 | 
  | 
  | 
 | 
| 103 | 
  | 
  | 
<tr> | 
| 104 | 
  | 
  | 
<td>? <i>file</i></td> | 
| 105 | 
  | 
  | 
 | 
| 106 | 
  | 
  | 
<td>means the file exists in your work space but not on the repository.</td> | 
| 107 | 
  | 
  | 
</tr> | 
| 108 | 
  | 
  | 
</table> | 
| 109 | 
  | 
  | 
 | 
| 110 | 
  | 
  | 
<blockquote> </blockquote> | 
| 111 | 
  | 
  | 
When conflicts arise, the sections of code are both kept and surrounded | 
| 112 | 
  | 
  | 
by <<<<<, ===== and >>>>> indicators. You need to | 
| 113 | 
  | 
  | 
<br>examine these lines of the files and resolve the conflict. | 
| 114 | 
  | 
  | 
<h2> | 
| 115 | 
  | 
  | 
Wow! CVS is so good, where can I learn more?</h2> | 
| 116 | 
  | 
  | 
The <a href="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">basic manual</a> | 
| 117 | 
  | 
  | 
is a good reference. There is also an <a href="http://www.loria.fr/~molli/cvs/cvs-tut/cvs_tutorial_toc.html">online | 
| 118 | 
  | 
  | 
tutorial</a> as well as an <a href="http://www.loria.fr/~molli/cvs/cvstrain/cvstrain.html">training | 
| 119 | 
  | 
  | 
manual</a>. For those who prefer the good old fashioned book there's <a href="http://cvsbook.red-bean.com/">"Open | 
| 120 | 
  | 
  | 
Source Development With CVS"</a>. | 
| 121 | 
  | 
  | 
<br> | 
| 122 | 
  | 
  | 
<hr WIDTH="100%"> | 
| 123 | 
  | 
  | 
<table CELLSPACING=0 CELLPADDING=0 WIDTH="100%" NOSAVE > | 
| 124 | 
  | 
  | 
<tr NOSAVE> | 
| 125 | 
adcroft | 
1.2 | 
<td NOSAVE>Last modified on $Date: 2001/02/09 18:58:02 $</td> | 
| 126 | 
adcroft | 
1.1 | 
 | 
| 127 | 
  | 
  | 
<td> | 
| 128 | 
adcroft | 
1.2 | 
<div align=right>CVS: $Source: /u/gcmpack/mitgcm.org/usingcvstoget.html,v $Revision: 1.1 $</div> | 
| 129 | 
adcroft | 
1.1 | 
</td> | 
| 130 | 
  | 
  | 
</tr> | 
| 131 | 
  | 
  | 
</table> | 
| 132 | 
  | 
  | 
 | 
| 133 | 
  | 
  | 
</body> | 
| 134 | 
  | 
  | 
</html> |