Get Zulip notifications when you `hg push`!

{!create-stream.md!}

Next, on your {{ settings_html|safe }}, create a Mercurial bot.

Then:

1.  {!download-python-bindings.md!}

2.  Edit the `hg/.hgrc` configuration file for this default Mercurial
repository and add the following sections, using the credentials for
your Mercurial bot and setting the appropriate path to the integration
hook if it installs in a different location on this system:

        [hooks]
        changegroup = python:zulip_changegroup.hook

        [zulip]
        email = "hg-bot@example.com"
        api_key = "0123456789abcdefg"
        stream = "commits"
        site = {{ api_url }}

3.  Add the directory where the `zulip_changegroup.py` script was
installed to the environment variable `PYTHONPATH`.  For example, if
you installed the Zulip Python bindings at the system level, it'd be:

        export PYTHONPATH=/usr/local/share/zulip/integrations/hg:$PYTHONPATH

That’s all it takes for the basic setup! On the next `hg push`, you’ll
get a Zulip update for the changeset.

### More configuration options

The Mercurial integration also supports:

-   linking to changelog and revision URLs for your repository’s web UI
-   branch whitelists and blacklists

#### Web repository links

If you’ve set up your repository to be [browsable via the web][1],
add a `web_url` configuration option to the `zulip` section of your
default `.hg/hgrc` to get changelog and revision links in your Zulip
notifications:

    [zulip]
    email = "hg-bot@example.com"
    api_key = "0123456789abcdefg"
    stream = "commits"
    web_url = "http://hg.example.com:8000/"
    site = {{ api_url }}

[1]: https://www.mercurial-scm.org/wiki/QuickStart#Network_support

#### Branch whitelists and blacklists

By default, this integration will send Zulip notifications for
changegroup events for all branches. If you’d prefer to only receive
Zulip notifications for specified branches, add a `branches`
configuration option to the `zulip` section of your default `.hg/hgrc`,
containing a comma-separated list of the branches that should produce
notifications:

    [zulip]
    email = "hg-bot@example.com"
    api_key = "0123456789abcdefg"
    stream = "commits"
    branches = "prod,default"

You can also exclude branches that you don’t want to cause
notifications. To do so, add an `ignore_branches` configuration option
to the `zulip` section of your default `.hg/hgrc`, containing a
comma-separated list of the branches that should be ignored:

    [zulip]
    email = "hg-bot@example.com"
    api_key = "0123456789abcdefg"
    stream = "commits"
    ignore_branches = "noisy,even-more-noisy"

When team members push new changesets with `hg push`, you’ll get a
Zulip notification.

{!congrats.md!}

![Mercurial bot message](/static/images/integrations/hg/001.png)
