Added support for CP_UNIXCP.
[wine] / documentation / cvs.sgml
1   <chapter id="cvs">
2     <title>Using CVS</title>
3     <!-- this part is sort of duplicated in the Wine User Guide's
4     getting.sgml file (as a short intro to CVS). Please don't forget 
5     to update both!
6     -->
7
8     <sect1>
9       <title>What is CVS?</title>
10
11       <para>
12         <ulink url="http://www.cvshome.org/">CVS</ulink> (Concurrent
13         Versions System) is the leading source code control system in
14         the freeware community.  It manages source code of projects,
15         keeps a history of changes to the source files and improves
16         conflict management when two or more developers work on the same
17         code part.  Another major benefit of CVS is that it's very easy
18         to update a project to the latest version.  CVS features
19         flexible branching, intelligent merging, high quality <ulink
20         url="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">documentation</ulink>
21         and client/server access with a wide choice of <ulink
22         url="http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel">clients</ulink>.
23       </para>
24
25       <para>
26         Current Wine sources are available via anonymous client/server
27         CVS.  You will need CVS 1.9 or above.  If you are coming from
28         behind a firewall, you will either need a hole in the firewall
29         for the CVS port (2401) or use <ulink
30         url="http://www.cyclic.com/cvs/d ev-net.html">SOCKS</ulink>.
31       </para>
32     </sect1>
33
34     <sect1>
35       <title>CVS installation check</title>
36       <para>
37         First you need to make sure that you have <command>cvs</command>
38         installed.
39         To check whether this is the case, please run:
40       </para>
41       <screen>
42       <prompt>$ </><userinput>cvs</>
43       </screen>
44       <para>
45         If this was successful, then you should have gotten a nice CVS
46         "Usage" help output.  Otherwise (e.g. an error "cvs: command not
47         found") you still need to install a CVS package for your
48         particular operating system, similar to the instructions given
49         in the Wine User Guide chapters for getting and installing a
50         Wine package on various systems.
51       </para>
52     </sect1>
53
54     <sect1>
55       <title>Configuring Wine-specific CVS settings</title>
56
57       <para>
58         First, you should do a
59       </para>
60       <screen>
61       <prompt>$ </><userinput>touch ~/.cvspass</>
62       </screen>
63       <para>
64         to create or update the file <filename>.cvspass</filename> in
65         your home directory, since CVS needs this file (for password
66         and login management) and will complain loudly if it doesn't exist.
67       </para>
68
69       <para>
70         Second, we need to create the file
71         <filename>.cvsrc</filename> in your home directory
72         containing the CVS configuration settings needed for a valid
73         Wine CVS setup (use CVS compression, properly update file and
74         directory information, ...).
75         The content of this file should look like the following:
76         <programlisting>
77 cvs -z 3
78 update -PAd
79 diff -u
80 checkout -P
81         </programlisting>
82         Create the file with an editor of your choice, either by running
83         <screen>
84         <prompt>$ </><userinput>&lt;editor&gt; ~/.cvsrc</>
85         </screen>
86         , where &lt;editor&gt; is the editor you want to use (e.g.
87         <command>joe</command>, <command>ae</command>,
88         <command>vi</command>),
89         or by creating the file <filename>.cvsrc</filename> in your
90         home directory with your favourite graphical editor like nedit, kedit,
91         gedit or others.
92       </para>
93       <para>
94         <command>-z</command> sets the compression level (Levels higher
95         than 3 will probably not result in faster downloading unless you
96         have a fast machine and a slow network connection).
97         <command>-Pd</command> will delete empty directories and create
98         newly added ones.  <command>-A</command> will reset any previous
99         tag in order to get the latest version in the tree.
100         <command>-u</command> will create the easiest to read
101         patches.  Please do not submit patches with <command>diff -w</command>.
102       </para>
103
104     </sect1>
105
106     <sect1>
107       <title>Downloading the Wine CVS tree</title>
108
109       <para>
110         Once CVS is installed and the Wine specific CVS
111         configuration is done, you can now do a login on our CVS
112         server and checkout (download) the Wine source code.
113         First, let's do the server login:
114       </para>
115       <screen>
116       <prompt>$ </><userinput>cvs -d :pserver:cvs@cvs.winehq.com:/home/wine login</>
117       </screen>
118       <para>
119         If <command>cvs</command> successfully connects to the CVS server,
120         then you will get a "CVS password:" prompt.
121         Simply enter "cvs" as the password (the password is
122         <emphasis>case sensitive</emphasis>: no capital letters!).
123         If you want to use one of the mirror servers for Wine CVS
124         download, please refer to the section <link
125         linkend="cvs-mirrors">Wine CVS mirror servers</link>.
126       </para>
127
128       <para>
129         After login, we are able to download the Wine source code tree.
130         Please make sure that you are in the directory that you want
131         to have the Wine source code in (the Wine source code will
132         use the subdirectory <filename>wine/</filename> in this
133         directory, since the subdirectory is named after the CVS module
134         that we want to check out). We assume that your current directory
135         might be your user's home directory.
136         To download the Wine tree into the subdirectory <filename>wine/</filename>, run:
137       </para>
138       <screen>
139       <prompt>$ </><userinput>cvs -d :pserver:cvs@cvs.winehq.com:/home/wine checkout wine</>
140       </screen>
141       <para>
142         Downloading the CVS tree might take a while (some minutes
143         to few hours), depending on your connection speed.
144         Once the download is finished, you should keep a note of
145         which directory the newly downloaded
146         <filename>wine/</filename> directory is in, by running
147         <command>pwd</command> (Print Working Directory):
148       </para>
149       <screen>
150       <prompt>$ </><userinput>pwd</>
151       </screen>
152       <para>
153         Later, you will be able to change to this directory by
154         running:
155       </para>
156       <screen>
157       <prompt>$ </><userinput>cd <replaceable>&lt;some_dir&gt;</></>
158       </screen>
159       <para>
160         , where &lt;some_dir&gt; is the directory that
161         <command>pwd</command> gave you.
162         By running
163       </para>
164       <screen>
165       <prompt>$ </><userinput>cd wine</>
166       </screen>
167       <para>
168         , you can now change to the directory of the Wine CVS tree
169         you just downloaded.
170       </para>
171     </sect1>
172
173     <sect1 id="cvs-mirrors">
174       <title>Wine CVS mirror servers</title>
175
176       <para>
177         Wine's CVS tree is mirrored at several places arround the world
178         to make sure that the source is easily accessible. Note that not
179         all servers have all repositories available, but all have at
180         least the Wine source.
181       </para>
182       <para>
183         CVS access is granted through CVS' "pserver"
184         authentication. You should set
185         your <command>CVSROOT</command> environment variable to point to one of
186         the servers using this format:
187       </para>
188       <screen>
189 CVSROOT=:pserver:&lt;Username&gt;@&lt;CVS Server&gt;:&lt;Server root&gt;
190       </screen>
191       <para>
192         Alternatively, you can use the -d parameter of
193         <command>cvs</command> instead.
194         Substitude the applicable fields from the table below.
195       </para>
196       <para>
197         Just do a traceroute and a ping on all servers below to find out
198         which are
199         closest to you.
200       </para>
201       <para>
202         <table><title>Wine CVS servers</title>
203           <tgroup cols=3 align="center">
204             <thead>
205               <row>
206                 <entry>CVS Server</entry>
207                 <entry>Username</entry>
208                 <entry>Password</entry>
209               </row>
210             </thead>
211             <tbody>
212               <row>
213                 <entry>cvs.winehq.com; Minnesota, USA (CodeWeavers)</entry>
214                 <entry>cvs</entry>
215                 <entry>cvs</entry>
216               </row>
217             </tbody>
218           </tgroup>
219         </table>
220       </para>
221     </sect1>
222
223     <sect1>
224       <title>Other modules available via CVS from WineHQ</title>
225
226       <para>
227         The WineHQ CVS server makes a couple of other things available as well.
228         To get these, log in anonymously as above and do:
229       </para>
230       <screen>
231       <prompt>$ </><userinput>cvs co <replaceable>&lt;modulename&gt;</></>
232       </screen>
233       <para>
234         where &lt;modulename&gt; is one of:
235       </para>
236       <itemizedlist>
237         <listitem>
238           <para>
239             <emphasis>Winehq_com</emphasis> -- source for the WineHQ web site
240           </para>
241         </listitem>
242         <listitem>
243           <para>
244             <emphasis>c2man</emphasis> -- automatic documentation system, specially modified for Wine
245           </para>
246         </listitem>
247       </itemizedlist>
248     </sect1>
249
250     <sect1>
251       <title>Converting a Wine FTP download to a CVS tree</title>
252
253       <para>
254         Getting the entire Wine source tree via 
255         CVS is pretty slow, especially compared to getting Wine from an
256         FTP mirror near you. It's possible to convert a Wine tarball to a CVS
257         sandbox, just like you would get by checking out the entire source
258         via CVS. Here's how to do it:
259       </para>
260       <itemizedlist>
261         <listitem>
262           <para>
263             Get the latest Wine snapshot: Wine-<replaceable>YYMMDD</replaceable>.tar.gz
264           </para>
265         </listitem>
266         <listitem>
267           <para>
268             Get wine-cvsdirs-<replaceable>YYMMDD</replaceable>.tar.gz from <ulink url="ftp://ftp.winehq.com/pub/wine/">ftp://ftp.winehq.com/pub/wine</ulink>
269           </para>
270           <para>
271             Use an FTP client rather than a web browser, and be sure to turn off passive mode, otherwise the fetch will hang.
272           </para>
273           <para>
274              e.g.:
275           </para>
276           <screen>
277 ftp ftp.winehq.com
278 cd pub/wine
279 passive off
280 ls
281           </screen>
282         </listitem>
283         <listitem>
284           <para>
285             Untar them on top of each other:
286           </para>
287           <screen>
288 tar xzf Wine-<replaceable>YYYYMMDD</replaceable>.tar.gz
289 mv wine-<replaceable>YYYYMMDD</replaceable> wine
290 tar xzf wine-cvsdirs-<replaceable>YYYYMMDD</replaceable>.tar.gz
291           </screen>
292         </listitem>
293         <listitem>
294           <para>
295             Update from main tree: login as above, then do
296           </para>
297           <screen>
298 cd wine
299 cvs update -PAd
300           </screen>
301         </listitem>
302       </itemizedlist>
303       <para>
304         You will now be completely up to date.
305       </para>
306     </sect1>
307
308     <sect1>
309       <title>WineHQ cvsweb access</title>
310
311       <para>
312 Direct access to the complete CVS tree is also possible, using Bill Fenner's
313 <ulink url="http://www.freebsd.org/~fenner/cvsweb/">cvsweb</ulink> package:
314         <itemizedlist>
315           <listitem>
316             <para>
317               <ulink url="http://cvs.winehq.com/cvsweb">cvs.winehq.com/cvsweb</ulink>, on the primary CVS repository
318             </para>
319           </listitem>
320         </itemizedlist>
321       </para>
322     </sect1>
323
324   </chapter>
325
326 <!-- Keep this comment at the end of the file
327 Local variables:
328 mode: sgml
329 sgml-parent-document:("wine-devel.sgml" "set" "book" "part" "chapter" "")
330 End:
331 -->