Configuring email
=================

.. Description of the various ways to specify to Breezy your email address for commits.

Why set up an email address with Breezy?
----------------------------------------

Breezy stores the specified email address in revisions when they're
created so that people can tell who committed which revisions.  The
email addresses are not verified, therefore they could be bogus, so
you have to trust the people involved in your project.  Additionally,
the email address in a revision gives others a way to contact the
author of a revision for credit and/or blame.  :)

How to set up your email address
--------------------------------

Breezy will try to guess an email address based on your username and the
hostname if none is set.  This will probably not be what you want, so three
ways exist to tell Breezy what email to use:

You can set your email in one of several configuration files.  Like
other configuration values, you can set it in ``breezy.conf`` as a
general setting.  If you want to override the value for a particular
branch, or set of branches, you can use ``locations.conf``.
``.brz/branch/branch.conf`` will also work, but will cause all commits
to that branch to use the same email address, even if someone else
does them.

The order of precedence is

 1. If the ``BRZ_EMAIL`` environment variable is set.
 #. If the ``BZR_EMAIL`` environment variable is set, for backwards
    compatibility with Bazaar.
 #. If an email is set for your current branch in the ``locations.conf``
    file.
 #. If an email is set four your current branch in the
    ``.brz/branch/branch.conf`` file.
 #. If an email is set in the ``breezy.conf`` default configuration file.
 #. If the `EMAIL` environment variable is set.
 #. Breezy will try to guess based on your username and the hostname.

To check on what Breezy thinks your current email is, use the ``whoami``
("who am i?") command::

    % brz whoami
    Joe Cool <joe@example.com>

Setting email via the 'whoami' command
--------------------------------------

You can use the whoami command to set your email globally::

    % brz whoami "Joe Cool <joe@example.com>"

or only for the current branch::

    % brz whoami --branch "Joe Cool <joe@example.com>"

These modify your global ``breezy.conf`` or branch ``branch.conf`` file, respectively.

Setting email via default configuration file
--------------------------------------------

To use the default ini file, create or edit the ``breezy.conf`` file (in
``~/.config/breezy/`` on Unix and in ``%APPDATA%\breezy\2.0\`` in Windows)
and set an email address as shown below.  Please note that the word DEFAULT
is case sensitive, and must be in upper-case.
::

    [DEFAULT]
    email=Your Name <name@isp.com>


For more information on the ini file format, see `Configuration Settings`_ in
the Breezy User Reference.

.. _Configuration Settings: ../user-reference/index.html#configuration-settings

Setting email on a per-branch basis
-----------------------------------

The second approach is to set email on a branch by branch basis by
using the ``locations.conf`` configuration file like this::

    [/some/branch/location]
    email=Your Name <name@other-isp.com>

This will set your email address in the branch at ``/some/branch/location``,
overriding the default specified in the ``breezy.conf`` above.

Setting email via environment variable
--------------------------------------
The final method Breezy will use is checking for the ``BRZ_EMAIL``
and ``EMAIL`` environment variables.  Generally, you would use this
method to override the email in a script context.  If you would like
to set a general default, then please see the ini methods above.

Concerns about spam
-------------------
Some people want to avoid sharing their email address so as not to get
spam.  Breezy will never disclose your email address, unless you publish
a branch or changeset in a public location.  It's recommended that you
*do* use a real address, so that people can contact you about your work,
but it's not required.  You can use an address which is obfuscated, which
bounces, or which goes through an anti-spam service such as
`spamgourmet.com`.
