<html>
<head>
	<title>PostgreSQL: Getting the source via CVS</title>
</head>
<body bgcolor=white text=black link=blue vlink=purple>

<font size="+3">Getting the source via CVS</font>

<p>If you would like to keep up with the current sources on a regular
basis, you can fetch them from our CVS server and then use CVS to
retrieve updates from time to time.

<P>To do this you first need a local copy of CVS (Concurrent Version Control
System), which you can get from
<A HREF="http://www.cyclic.com/">http://www.cyclic.com/</A> or
any GNU software archive site.  Currently we recommend version 1.9.

<P>Once you have installed the CVS software, do this:
<PRE>
cvs -d :pserver:anoncvs@postgresql.org:/usr/local/cvsroot login
</PRE>
You will be prompted for a password; enter '<tt>postgresql</tt>'.
You should only need to do this once, since the password will be
saved in <tt>.cvspass</tt> in your home directory.

<P>Having logged in, you are ready to fetch the PostgreSQL sources.
Do this:
<PRE>
cvs -z3 -d :pserver:anoncvs@postgresql.org:/usr/local/cvsroot co -P pgsql
</PRE>
which will install the PostgreSQL sources into a subdirectory <tt>pgsql</tt>
of the directory you are currently in.

<P>(If you have a fast link to the Internet, you may not need <tt>-z3</tt>,
which instructs CVS to use gzip compression for transferred data.  But
on a modem-speed link, it's a very substantial win.)

<P>This initial checkout is a little slower than simply downloading
a <tt>tar.gz</tt> file; expect it to take 40 minutes or so if you
have a 28.8K modem.  The advantage of CVS doesn't show up until you
want to update the file set later on.

<P>Whenever you want to update to the latest CVS sources, <tt>cd</tt> into
the <tt>pgsql</tt> subdirectory, and issue
<PRE>
cvs -z3 update -d -P
</PRE>
This will fetch only the changes since the last time you updated.
You can update in just a couple of minutes, typically, even over
a modem-speed line.

<P>You can save yourself some typing by making a file <tt>.cvsrc</tt>
in your home directory that contains

<PRE>
cvs -z3
update -d -P
</PRE>

This supplies the <tt>-z3</tt> option to all cvs commands, and the
<tt>-d</tt> and <tt>-P</tt> options to cvs update.  Then you just have
to say
<PRE>
cvs update
</PRE>
to update your files.

<P><strong>CAUTION:</strong> some versions of CVS have a bug that
causes all checked-out files to be stored world-writable in your
directory.  If you see that this has happened, you can do something like
<PRE>
chmod -R go-w pgsql
</PRE>
to set the permissions properly.  This bug is allegedly fixed in the
latest beta version of CVS, 1.9.28 ... but it may have other, less
predictable bugs.

<P>CVS can do a lot of other things, such as fetching prior revisions
of the PostgreSQL sources rather than the latest development version.
For more info consult the manual that comes with CVS, or see the online
documentation at <A HREF="http://www.cyclic.com/">http://www.cyclic.com/</A>.

</body>
</html>
