### Navigation

- index
- modules |
- previous |
- watchdog 0.8.3 documentation »

# Contributing

Welcome hacker! So you have got something you would like to see in `watchdog`? Whee. This document will help you get started.

## Important URLs

`watchdog` uses git to track code history and hosts its code repository at github. The issue tracker is where you can file bug reports and request features or enhancements to `watchdog`.

## Before you start

Ensure your system has the following programs and libraries installed before beginning to hack:

1. Python
2. git
3. ssh
4. XCode (on Mac OS X)
5. select_backport (on BSD/Mac OS X if you’re using Python 2.6)

## Setting up the Work Environment

`watchdog` makes extensive use of zc.buildout to set up its work environment. You should get familiar with it.

Steps to setting up a clean environment:

1. Fork the code repository into your github account. Let us call you `hackeratti` for the sake of this example. Replace `hackeratti` with your own username below.

2. Clone your fork and setup your environment:

       $ git clone --recursive git@github.com:hackeratti/watchdog.git
       $ cd watchdog
       $ python tools/bootstrap.py --distribute
       $ bin/buildout

Important

Re-run `bin/buildout` every time you make a change to the `buildout.cfg` file.

That’s it with the setup. Now you’re ready to hack on `watchdog`.

## Enabling Continuous Integration

The repository checkout contains a script called `autobuild.sh` which you must run prior to making changes. It will detect changes to Python source code or restructuredText documentation files anywhere in the directory tree and rebuild sphinx documentation, run all tests using nose, and generate coverage reports.

Start it by issuing this command in the `watchdog` directory checked out earlier:

    $ tools/autobuild.sh
    ...

Happy hacking!

### Navigation

- index
- modules |
- previous |
- watchdog 0.8.3 documentation »