This document BRIEFLY describes hacking on the Darcs codebase.  It's
assumed you're already familiar hacking Haskell code and using darcs
for version control.  Further information can be found in the wiki.


Testing Your Work
=================

Darcs is built thusly:

    ghc --make Setup && ./Setup configure && ./Setup build

This builds a binary in dist/build/darcs/darcs which you can run.
Functional tests are made thusly:

    ./Setup test                # all local tests
    ./Setup test tests/foo.sh   # a specific test
    ./Setup test bugs           # known bugs
    ./Setup test network        # all tests in tests/network

Unit tests are run thusly:

    ./Setup configure -ftest && ./Setup build
    dist/build/unit/unit

The default test hook will try to build Darcs and run the functional
tests every time you record a patch.  You can use --no-test if you're
in a hurry, but please try to test sometimes!


Submitting Your Work
====================

When you're done, send a patch bundle to the darcs-users list thusly:

    darcs send

Note that darcs-users is SUBSCRIBER ONLY.  You will need to be
subscribed to the list, and the From address must be the address you
subscribed with.  If you have multiple email addresses, you may want

    darcs send --from john@example.net

If you are re-sending a bundle because you were asked to amend
something, please try to set --in-reply-to to the Message-ID of the
message you're replying to.  With threading MUAs, this helps us
realize that you're resending, and prioritize accordingly.

If you haven't got a working MTA (e.g. msmtp), you can create a bundle
with the -O switch and send it using your MUA (e.g. thunderbird).
Please avoid this if possible, as it's a little inconvenient for us.
