Use iphlpapi to implement SIO_GET_INTERFACE_LIST in WSAIoctl, and
[wine.git] / documentation / cvs.sgml
blob17a0cddf7e6e632bf94555962f2578e93a32dc19
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 -->
8 <sect1>
9 <title>What is CVS?</title>
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>
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>
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>
54 <sect1>
55 <title>Configuring Wine-specific CVS settings</title>
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>
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>
104 </sect1>
106 <sect1>
107 <title>Downloading the Wine CVS tree</title>
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>
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>
173 <sect1 id="cvs-mirrors">
174 <title>Wine CVS mirror servers</title>
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>
223 <sect1>
224 <title>Other modules available via CVS from WineHQ</title>
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>
250 <sect1>
251 <title>Converting a Wine FTP download to a CVS tree</title>
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
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>
308 <sect1>
309 <title>WineHQ cvsweb access</title>
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>
324 </chapter>
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: