2015-01-20 16:23:16 +01:00
# Contributing to Compose
2014-03-06 11:57:24 +01:00
2015-03-26 13:11:05 +01:00
Compose is a part of the Docker project, and follows the same rules and
principles. Take a read of [Docker's contributing guidelines ](https://github.com/docker/docker/blob/master/CONTRIBUTING.md )
to get an overview.
2015-02-12 14:38:21 +01:00
2014-10-23 19:28:17 +02:00
## TL;DR
Pull requests will need:
- Tests
- Documentation
2015-02-12 14:38:21 +01:00
- [To be signed off ](https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work )
2014-10-23 19:28:17 +02:00
- A logical series of [well written commits ](https://github.com/alphagov/styleguides/blob/master/git.md )
2014-05-28 12:08:46 +02:00
## Development environment
2015-01-20 16:23:16 +01:00
If you're looking contribute to Compose
2014-03-06 11:57:24 +01:00
but you're new to the project or maybe even to Python, here are the steps
that should get you started.
2015-03-26 13:11:05 +01:00
1. Fork [https://github.com/docker/compose ](https://github.com/docker/compose )
to your username.
2. Clone your forked repository locally `git clone git@github.com:yourusername/compose.git` .
2015-07-02 16:39:22 +02:00
3. You must [configure a remote ](https://help.github.com/articles/configuring-a-remote-for-a-fork/ ) for your fork so that you can [sync changes you make ](https://help.github.com/articles/syncing-a-fork/ ) with the original repository.
2015-07-01 16:57:27 +02:00
4. Enter the local directory `cd compose` .
5. Set up a development environment by running `python setup.py develop` . This
2015-03-26 13:11:05 +01:00
will install the dependencies and set up a symlink from your `docker-compose`
executable to the checkout of the repository. When you now run
`docker-compose` from anywhere on your machine, it will run your development
version of Compose.
2014-03-06 11:57:24 +01:00
2015-08-25 16:53:31 +02:00
## Install pre-commit hooks
This step is optional, but recommended. Pre-commit hooks will run style checks
and in some cases fix style issues for you, when you commit code.
Install the git pre-commit hooks using [tox ](https://tox.readthedocs.org ) by
running `tox -e pre-commit` or by following the
[pre-commit install guide ](http://pre-commit.com/#install ).
To run the style checks at any time run `tox -e pre-commit` .
2015-07-01 16:57:27 +02:00
## Submitting a pull request
2015-07-01 19:05:21 +02:00
See Docker's [basic contribution workflow ](https://docs.docker.com/project/make-a-contribution/#the-basic-contribution-workflow ) for a guide on how to submit a pull request for code or documentation.
2015-07-01 16:57:27 +02:00
2014-03-06 11:57:24 +01:00
## Running the test suite
2015-04-27 16:00:50 +02:00
Use the test script to run linting checks and then the full test suite against
different Python interpreters:
2015-02-23 12:01:37 +01:00
2014-03-06 11:57:24 +01:00
$ script/test
2015-03-26 13:11:05 +01:00
Tests are run against a Docker daemon inside a container, so that we can test
against multiple Docker versions. By default they'll run against only the latest
Docker version - set the `DOCKER_VERSIONS` environment variable to "all" to run
against all supported versions:
2015-02-23 12:01:37 +01:00
$ DOCKER_VERSIONS=all script/test
2015-03-26 13:11:05 +01:00
Arguments to `script/test` are passed through to the `nosetests` executable, so
you can specify a test directory, file, module, class or method:
2015-02-23 12:01:37 +01:00
$ script/test tests/unit
$ script/test tests/unit/cli_test.py
2015-09-04 18:20:21 +02:00
$ script/test tests/unit/config_test.py::ConfigTest
$ script/test tests/unit/config_test.py::ConfigTest::test_load
2015-07-15 12:56:46 +02:00
## Finding things to work on
2015-09-02 02:23:39 +02:00
We use a [ZenHub board ](https://www.zenhub.io/ ) to keep track of specific things we are working on and planning to work on. If you're looking for things to work on, stuff in the backlog is a great place to start.
2015-07-15 12:56:46 +02:00
For more information about our project planning, take a look at our [GitHub wiki ](https://github.com/docker/compose/wiki ).