Compose is a part of the Docker project, and follows the same rules and principles. Take a read of Docker's contributing guidelines to get an overview.
Pull requests will need:
- Tests
- Documentation
- To be signed off
- A logical series of well written commits
If you're looking contribute to Compose but you're new to the project or maybe even to Python, here are the steps that should get you started.
- Fork https://github.com/docker/compose to your username.
- Clone your forked repository locally
git clone [email protected]:yourusername/compose.git
. - You must configure a remote for your fork so that you can sync changes you make with the original repository.
- Enter the local directory
cd compose
. - Set up a development environment by running
python setup.py develop
. This will install the dependencies and set up a symlink from yourdocker-compose
executable to the checkout of the repository. When you now rundocker-compose
from anywhere on your machine, it will run your development version of Compose.
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 by
running tox -e pre-commit
or by following the
pre-commit install guide.
To run the style checks at any time run tox -e pre-commit
.
See Docker's basic contribution workflow for a guide on how to submit a pull request for code.
Issues and pull requests to update the documentation should be submitted to the docs repo. You can learn more about contributing to the documentation here.
Use the test script to run linting checks and then the full test suite against different Python interpreters:
$ script/test/default
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:
$ DOCKER_VERSIONS=all script/test/default
Arguments to script/test/default
are passed through to the tox
executable, so
you can specify a test directory, file, module, class or method:
$ script/test/default tests/unit
$ script/test/default tests/unit/cli_test.py
$ script/test/default tests/unit/config/config_test.py::ConfigTest
$ script/test/default tests/unit/config/config_test.py::ConfigTest::test_load
Issues marked with the exp/beginner
label are a good starting point for people looking to make their first contribution to the project.