The Concurrent Versions System (CVS, see http://www.cyclic.com) provides
network-transparent source control for groups of developers. For ordinary
users it provides a convenient way to obtain patched versions in between
releases. CVS clients are available for most major platforms: Unix, MacOS,
Windows (see http://www.wincvs.org/).

This file documents access to the PARI CVS server, which is intended for
PARI lovers who want the very latest bleeding edge release. The CVS sources
may contain severe bugs, benches may fail, they may not even compile. Stable
releases are made available on a regular basis using the customary method:
a message to pari-announce.

1) First connection to the anonymous CVS server:
================================================
Type the following commands from the shell

  cvs -d :pserver:cvs@pari.math.u-bordeaux.fr:/home/cvs login

Hit return when asked for a password: there is no password; then back to the
shell prompt

  cvs -z3 -d :pserver:cvs@pari.math.u-bordeaux.fr:/home/cvs checkout pari

This last command creates a local copy of the distribution from the
distant repository (in local directory 'pari'), using GNU gzip to compress
the files during the transfer. (If gzip is not installed on your machine,
remove the -z3 flag.)

From now on, you can go to this pari directory and use any cvs command
directly (without the cryptic -d argument), as long as you remain there
(or in a subdirectory). Password will not be required again.

2) What can I do now ?
======================

* You can build pari in the usual way (see INSTALL) as if this 'pari'
directory had been created by fetching, then extracting, an archive on an FTP
server.

* You can update your local copy at any time using 'cvs update -d', which will
put you in synch with the repository. (The '-d' argument tells CVS to also
update the directory structure if need be.)

* You can check exact differences between successive versions of a given file
by using 'cvs diff'. If you modify some files on your local copy, this also
enables you to track down your changes, and produce a patch. You will not be
able to commit your changes using anonymous access. Send the output of 'cvs
diff' [ with flag -c if your local diff supports it ] to the pari-dev mailing
list with a short description of what you have done, or to
pari@math.u-bordeaux.fr if you are not subscribed to pari-dev.

If you plan to do that on a regular basis (which would be very nice :-),
send a note to pari-dev, telling what kind of development work you are
interested in, and ask for the rights to modify the repository directly.
Once this is granted, you will be able to log in as a CVS administrator
instead of 'cvs' (CVS user) as described above and you will be able to use
'cvs commit'.

3) Version tags:
================

All project files have an individual version number, independent of the
release numbering scheme. Official releases (starting from version 2.0.17)
are 'tagged' so that all files pertaining to a given release can be
simultaneously accessed without tracking version numbers. Tag names are
'release-<VERSION>' with dots replaced by dashes, e.g 'release-2-0-20' for
2.0.20.

If you want to fetch a specific version of pari (2.0.17 or more recent), add
the argument '-r <TAG>' to your checkout or update command. The tag
'release-2-1-patches' denotes the stable branch 2.1 as a whole, and can be
used to checkout up to date sources from that branch in between releases. For
instance: 

  cvs update -r release-2-1-patches

produces the latest stable distribution with all relevant patches [the ones
not affecting stability] backported.

TIPS and CAVEATS:
=================
* you can speed up file transfers by using cvs -z3 (transfer files in
compressed format), e.g 'cvs -z3 update' if you have missed a lot of patches,
or 'cvs -z3 checkout' for the initial checkout. This requires that GNU gzip
be in your path. 

* You can create a .cvsrc file in your home directory containing lines of the
form:

    cvs -z3          [ use gzip -3 for all transfers ]
    diff -c          [ use diff -c (context diff) by default in 'cvs diff' ]

* 'cvs diff' gives you the difference between your local copy and the
sources they were based on, not with the current state of the repository.
Use 'cvs diff -D now' for that.

* On Windows 95/98/2000 + Cygwin, you may have to explicitly set HOME (e.g
in your .bashrc) to some existing directory otherwise CVS will abort on
startup (when trying to create a .cvspass file).
