Appendix DG1. The CVS Repository

Table of Contents
DG1.1. Getting The Source Via Anonymous CVS
DG1.2. CVS Tree Organization
DG1.3. Getting The Source Via CVSup

The Postgres source code is stored and managed using the CVS code management system.

At least two methods, anonymous CVS and CVSup, are available to pull the CVS code tree from the Postgres server to your local machine.

DG1.1. Getting The Source Via Anonymous CVS

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.

Anonymous CVS

  1. You will need a local copy of CVS (Concurrent Version Control System), which you can get from http://www.cyclic.com/ or any GNU software archive site. We currently recommend version 1.10 (the most recent at the time of writing). Many systems have a recent version of cvs installed by default.

  2. Do an initial login to the CVS server:

    $ cvs -d :pserver:anoncvs@postgresql.org:/home/projects/pgsql/cvsroot login
         
    You will be prompted for a password; enter 'postgresql'. You should only need to do this once, since the password will be saved in .cvspass in your home directory.

  3. Fetch the Postgres sources:

    cvs -z3 -d :pserver:anoncvs@postgresql.org:/home/projects/pgsql/cvsroot co -P pgsql
         
    which installs the Postgres sources into a subdirectory pgsql of the directory you are currently in.

    Note: If you have a fast link to the Internet, you may not need -z3, which instructs CVS to use gzip compression for transferred data. But on a modem-speed link, it's a very substantial win.

    This initial checkout is a little slower than simply downloading a tar.gz 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.

  4. Whenever you want to update to the latest CVS sources, cd into the pgsql subdirectory, and issue

    $ cvs -z3 update -d -P
         
    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.

  5. You can save yourself some typing by making a file .cvsrc in your home directory that contains

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

Caution

Some older 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

$ chmod -R go-w pgsql
    
to set the permissions properly. This bug is fixed as of CVS version 1.9.28.

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