| <chapter id="cvs"> | |
| <title>Using CVS</title> | |
| <!-- this part is sort of duplicated in the Wine User Guide's | |
| getting.sgml file (as a short intro to CVS). Please don't forget | |
| to update both! | |
| --> | |
| <sect1> | |
| <title>What is CVS?</title> | |
| <para> | |
| <ulink url="http://www.cvshome.org/">CVS</ulink> (Concurrent | |
| Versions System) is the leading source code control system in | |
| the freeware community. It manages source code of projects, | |
| keeps a history of changes to the source files and improves | |
| conflict management when two or more developers work on the same | |
| code part. Another major benefit of CVS is that it's very easy | |
| to update a project to the latest version. CVS features | |
| flexible branching, intelligent merging, high quality <ulink | |
| url="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">documentation</ulink> | |
| and client/server access with a wide choice of <ulink | |
| url="http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel">clients</ulink>. | |
| </para> | |
| <para> | |
| Current Wine sources are available via anonymous client/server | |
| CVS. You will need CVS 1.9 or above. If you are coming from | |
| behind a firewall, you will either need a hole in the firewall | |
| for the CVS port (2401) or use <ulink | |
| url="http://www.cyclic.com/cvs/d ev-net.html">SOCKS</ulink>. | |
| </para> | |
| </sect1> | |
| <sect1> | |
| <title>CVS installation check</title> | |
| <para> | |
| First you need to make sure that you have <command>cvs</command> | |
| installed. | |
| To check whether this is the case, please run: | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>cvs</> | |
| </screen> | |
| <para> | |
| If this was successful, then you should have gotten a nice CVS | |
| "Usage" help output. Otherwise (e.g. an error "cvs: command not | |
| found") you still need to install a CVS package for your | |
| particular operating system, similar to the instructions given | |
| in the Wine User Guide chapters for getting and installing a | |
| Wine package on various systems. | |
| </para> | |
| </sect1> | |
| <sect1> | |
| <title>Configuring Wine-specific CVS settings</title> | |
| <para> | |
| First, you should do a | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>touch ~/.cvspass</> | |
| </screen> | |
| <para> | |
| to create or update the file <filename>.cvspass</filename> in | |
| your home directory, since CVS needs this file (for password | |
| and login management) and will complain loudly if it doesn't exist. | |
| </para> | |
| <para> | |
| Second, we need to create the file | |
| <filename>.cvsrc</filename> in your home directory | |
| containing the CVS configuration settings needed for a valid | |
| Wine CVS setup (use CVS compression, properly update file and | |
| directory information, ...). | |
| The content of this file should look like the following: | |
| <programlisting> | |
| cvs -z 3 | |
| update -PAd | |
| diff -u | |
| checkout -P | |
| </programlisting> | |
| Create the file with an editor of your choice, either by running | |
| <screen> | |
| <prompt>$ </><userinput><editor> ~/.cvsrc</> | |
| </screen> | |
| , where <editor> is the editor you want to use (e.g. | |
| <command>joe</command>, <command>ae</command>, | |
| <command>vi</command>), | |
| or by creating the file <filename>.cvsrc</filename> in your | |
| home directory with your favourite graphical editor like nedit, kedit, | |
| gedit or others. | |
| </para> | |
| <para> | |
| <command>-z</command> sets the compression level (Levels higher | |
| than 3 will probably not result in faster downloading unless you | |
| have a fast machine and a slow network connection). | |
| <command>-Pd</command> will delete empty directories and create | |
| newly added ones. <command>-A</command> will reset any previous | |
| tag in order to get the latest version in the tree. | |
| <command>-u</command> will create the easiest to read | |
| patches. Please do not submit patches with <command>diff -w</command>. | |
| </para> | |
| </sect1> | |
| <sect1> | |
| <title>Downloading the Wine CVS tree</title> | |
| <para> | |
| Once CVS is installed and the Wine specific CVS | |
| configuration is done, you can now do a login on our CVS | |
| server and checkout (download) the Wine source code. | |
| First, let's do the server login: | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>cvs -d :pserver:cvs@cvs.winehq.com:/home/wine login</> | |
| </screen> | |
| <para> | |
| If <command>cvs</command> successfully connects to the CVS server, | |
| then you will get a "CVS password:" prompt. | |
| Simply enter "cvs" as the password (the password is | |
| <emphasis>case sensitive</emphasis>: no capital letters!). | |
| If you want to use one of the mirror servers for Wine CVS | |
| download, please refer to the section <link | |
| linkend="cvs-mirrors">Wine CVS mirror servers</link>. | |
| </para> | |
| <para> | |
| After login, we are able to download the Wine source code tree. | |
| Please make sure that you are in the directory that you want | |
| to have the Wine source code in (the Wine source code will | |
| use the subdirectory <filename>wine/</filename> in this | |
| directory, since the subdirectory is named after the CVS module | |
| that we want to check out). We assume that your current directory | |
| might be your user's home directory. | |
| To download the Wine tree into the subdirectory <filename>wine/</filename>, run: | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>cvs -d :pserver:cvs@cvs.winehq.com:/home/wine checkout wine</> | |
| </screen> | |
| <para> | |
| Downloading the CVS tree might take a while (some minutes | |
| to few hours), depending on your connection speed. | |
| Once the download is finished, you should keep a note of | |
| which directory the newly downloaded | |
| <filename>wine/</filename> directory is in, by running | |
| <command>pwd</command> (Print Working Directory): | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>pwd</> | |
| </screen> | |
| <para> | |
| Later, you will be able to change to this directory by | |
| running: | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>cd <replaceable><some_dir></></> | |
| </screen> | |
| <para> | |
| , where <some_dir> is the directory that | |
| <command>pwd</command> gave you. | |
| By running | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>cd wine</> | |
| </screen> | |
| <para> | |
| , you can now change to the directory of the Wine CVS tree | |
| you just downloaded. | |
| </para> | |
| </sect1> | |
| <sect1 id="cvs-mirrors"> | |
| <title>Wine CVS mirror servers</title> | |
| <para> | |
| Wine's CVS tree is mirrored at several places arround the world | |
| to make sure that the source is easily accessible. Note that not | |
| all servers have all repositories available, but all have at | |
| least the Wine source. | |
| </para> | |
| <para> | |
| CVS access is granted through CVS' "pserver" | |
| authentication. You should set | |
| your <command>CVSROOT</command> environment variable to point to one of | |
| the servers using this format: | |
| </para> | |
| <screen> | |
| CVSROOT=:pserver:<Username>@<CVS Server>:<Server root> | |
| </screen> | |
| <para> | |
| Alternatively, you can use the -d parameter of | |
| <command>cvs</command> instead. | |
| Substitude the applicable fields from the table below. | |
| </para> | |
| <para> | |
| Just do a traceroute and a ping on all servers below to find out | |
| which are | |
| closest to you. | |
| </para> | |
| <para> | |
| <table><title>Wine CVS servers</title> | |
| <tgroup cols=3 align="center"> | |
| <thead> | |
| <row> | |
| <entry>CVS Server</entry> | |
| <entry>Username</entry> | |
| <entry>Password</entry> | |
| </row> | |
| </thead> | |
| <tbody> | |
| <row> | |
| <entry>cvs.winehq.com; Minnesota, USA (CodeWeavers)</entry> | |
| <entry>cvs</entry> | |
| <entry>cvs</entry> | |
| </row> | |
| </tbody> | |
| </tgroup> | |
| </table> | |
| </para> | |
| </sect1> | |
| <sect1> | |
| <title>Other modules available via CVS from WineHQ</title> | |
| <para> | |
| The WineHQ CVS server makes a couple of other things available as well. | |
| To get these, log in anonymously as above and do: | |
| </para> | |
| <screen> | |
| <prompt>$ </><userinput>cvs co <replaceable><modulename></></> | |
| </screen> | |
| <para> | |
| where <modulename> is one of: | |
| </para> | |
| <itemizedlist> | |
| <listitem> | |
| <para> | |
| <emphasis>Winehq_com</emphasis> -- source for the WineHQ web site | |
| </para> | |
| </listitem> | |
| <listitem> | |
| <para> | |
| <emphasis>c2man</emphasis> -- automatic documentation system, specially modified for Wine | |
| </para> | |
| </listitem> | |
| </itemizedlist> | |
| </sect1> | |
| <sect1> | |
| <title>Converting a Wine FTP download to a CVS tree</title> | |
| <para> | |
| Getting the entire Wine source tree via | |
| CVS is pretty slow, especially compared to getting Wine from an | |
| FTP mirror near you. It's possible to convert a Wine tarball to a CVS | |
| sandbox, just like you would get by checking out the entire source | |
| via CVS. Here's how to do it: | |
| </para> | |
| <itemizedlist> | |
| <listitem> | |
| <para> | |
| Get the latest Wine snapshot: Wine-<replaceable>YYMMDD</replaceable>.tar.gz | |
| </para> | |
| </listitem> | |
| <listitem> | |
| <para> | |
| Get wine-cvsdirs-<replaceable>YYMMDD</replaceable>.tar.gz from <ulink url="ftp://ftp.winehq.com/pub/wine/">ftp://ftp.winehq.com/pub/wine</ulink> | |
| </para> | |
| <para> | |
| Use an FTP client rather than a web browser, and be sure to turn off passive mode, otherwise the fetch will hang. | |
| </para> | |
| <para> | |
| e.g.: | |
| </para> | |
| <screen> | |
| ftp ftp.winehq.com | |
| cd pub/wine | |
| passive off | |
| ls | |
| </screen> | |
| </listitem> | |
| <listitem> | |
| <para> | |
| Untar them on top of each other: | |
| </para> | |
| <screen> | |
| tar xzf Wine-<replaceable>YYYYMMDD</replaceable>.tar.gz | |
| mv wine-<replaceable>YYYYMMDD</replaceable> wine | |
| tar xzf wine-cvsdirs-<replaceable>YYYYMMDD</replaceable>.tar.gz | |
| </screen> | |
| </listitem> | |
| <listitem> | |
| <para> | |
| Update from main tree: login as above, then do | |
| </para> | |
| <screen> | |
| cd wine | |
| cvs update -PAd | |
| </screen> | |
| </listitem> | |
| </itemizedlist> | |
| <para> | |
| You will now be completely up to date. | |
| </para> | |
| </sect1> | |
| <sect1> | |
| <title>WineHQ cvsweb access</title> | |
| <para> | |
| Direct access to the complete CVS tree is also possible, using Bill Fenner's | |
| <ulink url="http://www.freebsd.org/~fenner/cvsweb/">cvsweb</ulink> package: | |
| <itemizedlist> | |
| <listitem> | |
| <para> | |
| <ulink url="http://cvs.winehq.com/cvsweb">cvs.winehq.com/cvsweb</ulink>, on the primary CVS repository | |
| </para> | |
| </listitem> | |
| </itemizedlist> | |
| </para> | |
| </sect1> | |
| </chapter> | |
| <!-- Keep this comment at the end of the file | |
| Local variables: | |
| mode: sgml | |
| sgml-parent-document:("wine-devel.sgml" "set" "book" "part" "chapter" "") | |
| End: | |
| --> |