H.2. 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.nongnu.org/cvs/ (the official site with the latest version) or any GNU software archive site (often somewhat outdated). Many systems have a recent version of cvs installed by default.

  2. Do an initial login to the CVS server:

    cvs -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot login

    You will be prompted for a password; you can enter anything except an empty string.

    You should only need to do this once, since the password will be saved in .cvspass in your home directory.

  3. Fetch the PostgreSQL sources:

    cvs -z3 -d :pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot co -P pgsql

    This installs the PostgreSQL sources into a subdirectory pgsql of the directory you are currently in.

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

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 http://www.nongnu.org/cvs/.

CVS has deficiencies. For example, generating diffs that add or remove files requires write access to the CVS repository. To work around that deficiency, use cvsutils, which is packaged in several operating systems, and is available in source form at http://www.red-bean.com/cvsutils/, or use Git or another system designed to work offline.

Note that building PostgreSQL from a CVS pull requires reasonably up-to-date versions of bison and flex, which are not needed to build from a distribution tarball because the files made with them are pre-built in a tarball. You will need Perl as well. Otherwise the tool requirements are the same as building from source.