Using CVSWhat is CVS?CVS (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 documentation
and client/server access with a wide choice of clients.
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 SOCKS.
CVS installation check
First you need to make sure that you have cvs
installed.
To check whether this is the case, please run:
$ >cvs>
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.
Configuring Wine-specific CVS settings
First, you should do a
$ >touch ~/.cvspass>
to create or update the file .cvspass in
your home directory, since CVS needs this file (for password
and login management) and will complain loudly if it doesn't exist.
Second, we need to create the file
.cvsrc 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:
cvs -z 3
update -PAd
diff -u
checkout -P
Create the file with an editor of your choice, either by running
$ ><editor> ~/.cvsrc>
, where <editor> is the editor you want to use (e.g.
joe, ae,
vi),
or by creating the file .cvsrc in your
home directory with your favorite graphical editor like nedit, kedit,
gedit or others.
-z 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).
-Pd will delete empty directories and create
newly added ones. -A will reset any previous
tag in order to get the latest version in the tree.
-u will create the easiest to read
patches. Please do not submit patches with diff -w.
Downloading the Wine CVS tree
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:
$ >cvs -d :pserver:cvs@cvs.winehq.com:/home/wine login>
If cvs successfully connects to the CVS server,
then you will get a "CVS password:" prompt.
Simply enter "cvs" as the password (the password is
case sensitive: no capital letters!).
If you want to use one of the mirror servers for Wine CVS
download, please refer to the section Wine CVS mirror servers.
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 wine/ 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 wine/, run:
$ >cvs -d :pserver:cvs@cvs.winehq.com:/home/wine checkout wine>
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
wine/ directory is in, by running
pwd (Print Working Directory):
$ >pwd>
Later, you will be able to change to this directory by
running:
$ >cd <some_dir>>>
, where <some_dir> is the directory that
pwd gave you.
By running
$ >cd wine>
, you can now change to the directory of the Wine CVS tree
you just downloaded.
Wine CVS mirror servers
Wine's CVS tree is mirrored at several places around 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.
CVS access is granted through CVS' "pserver"
authentication. You should set
your CVSROOT environment variable to point to one of
the servers using this format:
CVSROOT=:pserver:<Username>@<CVS Server>:<Server root>
Alternatively, you can use the -d parameter of
cvs instead.
Substitute the applicable fields from the table below.
Just do a traceroute and a ping on all servers below to find out
which are
closest to you.
Wine CVS serversCVS ServerUsernamePasswordcvs.winehq.com; Minnesota, USA (CodeWeavers)cvscvs
Other modules available via CVS from WineHQ
The WineHQ CVS server makes a couple of other things available as well.
To get these, log in anonymously as above and do:
$ >cvs co <modulename>>>
where <modulename> is one of:
Winehq_com -- source for the WineHQ web site
c2man -- automatic documentation system, specially modified for Wine
Converting a Wine FTP download to a CVS tree
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:
Get the latest Wine snapshot: Wine-YYMMDD.tar.gz
Get wine-cvsdirs-YYMMDD.tar.gz from ftp://ftp.winehq.com/pub/wine
Use an FTP client rather than a web browser, and be sure to turn off passive mode, otherwise the fetch will hang.
e.g.:
ftp ftp.winehq.com
cd pub/wine
passive off
ls
Untar them on top of each other:
tar xzf Wine-YYYYMMDD.tar.gz
mv wine-YYYYMMDD wine
tar xzf wine-cvsdirs-YYYYMMDD.tar.gz
Update from main tree: login as above, then do
cd wine
cvs update -PAd
You will now be completely up to date.
WineHQ cvsweb access
Direct access to the complete CVS tree is also possible, using Bill Fenner's
cvsweb package:
cvs.winehq.com/cvsweb, on the primary CVS repository