Next: Darcs commands Up: Darcs 0.9.23 David's advanced Previous: Getting started Contents
Subsections

- prefs
  - defaults
  - repos
  - author
  - boring
  - binaries
  - motd
- Environment variables
  - DARCS_EMAIL
  - DARCS_EDITOR
  - DARCS_TMPDIR
  - HOME
  - TERM
  - SSH_PORT
  - DARCS_SSH
  - DARCS_SCP

#
Configuring darcs

There are sevaral ways you can adjust darcs' behavior to suit your needs. The first is to edit files in the `_darcs/prefs/` directory of a repository. Such configuration only applies when working with that repository. To configure darcs on a per-user rather than per-repository basis (but with essentially the same methods), you can edit (or create) files in the `~/.darcs/` directory. Finally, the behavior of some darcs commands can be modified by setting appropriate environment variables.

# prefs

The `_darcs` directory contains a `prefs` directory. This directory exists simply to hold user configuration settings specific to this repository. The contents of this directory are intended to be modifiable by the user, although in some cases a mistake in such a modification may cause darcs to behave strangely.

##
defaults

Default values for darcs commands can be configured on a per-repository basis by editing (and possibly creating) the `_darcs/prefs/defaults` file. Each line of this file has the following form:

    COMMAND FLAG VALUE

where `COMMAND` is either the name of the command to which the default applies, or `ALL` to indicate that the default applies to all commands accepting that flag. The `FLAG` term is the name of the long argument option without the ```--`'', i.e. `verbose` rather than `--verbose`. Finally, the `VALUE` option can be omitted if the flag is one such as `verbose` that doesn't involve a value.

For example, if your system clock is bizarre, you could instruct darcs to always ignore the file modification times by adding the following line to your `_darcs/prefs/defaults` file. (Note that this would have to be done for each repository!)

    ALL ignore-times

If you never want to run a test when recording to a particular repository (but still want to do so when running check on that repo), and like to name all your patches ``Stupid patch'', you could use the following:

    record no-test
    record patch-name Stupid patch

Also, a global preferences file can be created with the name `.darcs/defaults` in your home directory. Options present there will be added to the repository-specific preferences.

## repos

The `_darcs/prefs/repos` file contains a list of repositories you have pulled from or pushed to, and is used for autocompletion of pull and push commands in bash. Feel free to delete any lines from this list that might get in there, or to delete the file as a whole.

##
author

The `_darcs/prefs/author` file contains the email address (or name) to be used as the author when patches are recorded in this repository. This file overrides the contents of the environment variables `$DARCS_EMAIL` and `$EMAIL`.

## boring

The `_darcs/prefs/boring` file may contain a list of regular expressions describing files, such as object files, that you do not expect to add to your project. As an example, the boring file that I use with my darcs repository is:

    \.hi$
    \.o$
    ^\.[^/]
    ^_
    ~$
    (^|/)CVS($|/)

The last line is actually irrelevant because I don't use CVS, but if I did it would be handy. You may want to have the boring file under version control. To do this you can use darcs setpref to set the value ``boringfile'' to the name of your desired boring file (e.g. ``darcs setpref boringfile ./.boring'', where the .boring is a file that has been darcs added to your repository). You can also set up a ``boring'' regexps file in your home directory, named `~/.darcs/boring`, which will be used with all of your darcs repositories.

Any file whose full path (such as `manual/index.html`) matches any of the boring regular expressions is considered boring. The boring file is used to filter the files provided to darcs add, to allow you to use a simple ``darcs add newdir newdir/*'' without accidentally adding a bunch of object files. It is also used when the `--look-for-adds` flag is given to whatsnew or record.

## binaries

The `_darcs/prefs/binaries` file may contain a list of regular expressions describing files that should be treated as binary files rather than text files. You probably will want to have the binaries file under version control. To do this you can use darcs setpref to set the value ``binariesfile'' to the name of your desired binaries file (e.g. ``darcs setpref binariesfile ./.binaries'', where .binaries is a file that has been darcs added to your repository). As with the boring file, you can also set up a `~/.darcs/binaries` file if you like.

## motd

The `_darcs/prefs/motd` file may a ``message of the day'' which will be displayed to user who get or pull from the repo without the `--quiet` option.

# Environment variables

There are a few environment variables whose contents affect darcs' behavior.

## DARCS_EMAIL

The DARCS_EMAIL environment variable determines the ``author'' name used by darcs when recording if no `_darcs/prefs/author` exists. If DARCS_EMAIL is undefined, the contents of the EMAIL environment variable are used.

## DARCS_EDITOR

When pulling up an editor (for example, when adding a long comment in record), darcs uses the contents of DARCS_EDITOR if it is defined. If not, it tries the contents of VISUAL, and if that isn't defined (or fails for some reason), it tries EDITOR. If none of those environment variables are defined, darcs tries `vi`, `emacs`, `emacs -nw` and `nano` in that order.

## DARCS_TMPDIR

If the environment variable DARCS_TMPDIR is defined, darcs will use that directory for its temporaries. Otherwise it will use TMPDIR, if that is defined, and if not that then `/tmp` and if `/tmp` doesn't exist, it'll put the temporaries in `_darcs`.

This is very helpful, for example, when recording with a test suite that uses MPI, in which case using `/tmp` to hold the test copy is no good, as `/tmp` isn't shared over NFS and thus the `mpirun` call will fail, since the binary isn't present on the compute nodes.

## HOME

HOME is used to find the per-user prefs directory, which is located at `$HOME/.darcs`.

## TERM

If darcs is compiled with libcurses support and support for color output, it uses the environment variable TERM to decide whether or not color is supported on the output terminal.

## SSH_PORT

When using ssh, if the SSH_PORT enviroment variable is defined, darcs will use that port rather than the default ssh port (which is 22).

## DARCS_SSH

The DARCS_SSH environment variable defines the command that darcs will use when asked to run ssh. This command is not interpereted by a shell, so you cannot use shell metacharacters, and the first word in the command must be the name of an executable located in your path.

## DARCS_SCP

The DARCS_SCP environment variable defines the command that darcs will use when asked to run scp. Note that scp is how darcs accesses repositories whose URL is of the form `user@foo.org:foo` or `foo.org:foo`. This command is not interpereted by a shell, so you cannot use shell metacharacters, and the first word in the command must be the name of an executable located in your path.

Next: Darcs commands Up: Darcs 0.9.23 David's advanced Previous: Getting started Contents