# CVS access to Hat

This page tells you how to get CVS access to the latest, most current, Hat sources.

### Remote Read-only CVS Access

Read-only access is available to anyone - there's no need to ask us first. To get read-only access to the repository:

- Obviously, you need to have the cvs command installed.
- The first time you access the repository, you'll need to do the following:

            $ cvs -d :pserver:anoncvs@cvs.haskell.org:/cvs login
            Password: cvs

  You only need to supply the password once, because cvs will squirrel it away for future use in $HOME/.cvspass.
- To checkout the hat sources, use this command:

            $ cvs -d :pserver:anoncvs@cvs.haskell.org:/cvs checkout hat

  The checked-out source tree will appear in a directory called `hat`. You can rename this directory to whatever you like, CVS won't mind.
- From then on, you should no longer need the -d blah option, and commands like

            $ cvs diff
            $ cvs update

  should work, provided your working directory is somewhere inside the checked out tree. In normal use, `cvs update` is the command to merge the latest changes from the central repository into your local tree. `cvs diff` gives you the differences between your version and the central version.
- If you change your current directory into a sub-directory of the CVS tree, cvs commands will normally operate only on that subtree, not on the full tree. This is very handy if you are only interested in a small part of the source.

With read-only CVS access you can do anything except commit changes to the repository. You can make changes to your local tree, and still use CVS's update facility to keep your tree otherwise up-to-date, and you can generate patches using `cvs diff` in order to send to us for inclusion.

To set up default flags for some of the CVS commands, you can create a `.cvsrc` file. For instance, the -P flag to 'update' says prune empty directories, which is normally what you want, and the -d flag ensures that you collect new directories that have been added. Here is an example `.cvsrc` file:

            checkout -P
            release -d
            update -d -P
            diff -c

### Using the checked-out CVS tree

The first thing to do after checking out a fresh tree is `./configure`, setting whatever options you wish to use. It is always safe to re-run the `./configure` script at any time - it will never leave your configuration in an inconsistent state. The machine/OS combination is always detected first so you can't re-use the wrong machine configuration by mistake, and although previous options for a particular machine are cached, they are always reported, and can be always overridden on the command line.

Then, do a `make` with whatever targets you are interested in: `make help` will give you a list of the common ones. For instance, `make hat` gives you everything, but `make hat-tools` gives you just the browsing tools.

### Tracking changes in the CVS repository

The log messages of all CVS commit actions are currently sent to the mailing list `cvs-nhc98@haskell.org`. If you wish to see who is making changes, why, and and what they say about them, please do join this list - see `http://haskell.org/mailman/listinfo` for further details.

### Core developers - write-access to CVS

Core developers of hat have write-access to the CVS repository. They need to use a slightly different procedure for accessing the source tree:

- You need to have ssh (secure shell) installed.
- Set your CVS_RSH environment variable to `ssh`.
- The first time you access the repository, you'll need to do the following:

            $ cvs -d :ext:username@cvs.haskell.org:/home/cvs/root checkout hat

All the other instructions are the same, except that developers also have permission to commit changes to the repository.

### Gaining write-access

To obtain write-access to cvs.haskell.org, you need to ask the Haskell CVS maintainer - Jeff Lewis <jlewis@galconn.com> - for an account. The details are on the GHC CVS cheat-sheet (Section 2.1.2).

The latest updates to these pages are available on the WWW from `http://www.haskell.org/nhc98/`
`http://www.cs.york.ac.uk/fp/nhc98/`

This page last modified: 13th March 2003
York Functional Programming Group