| <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-doc.sgml" "set" "book" "part" "chapter" "") |
| End: |
| --> |