Phinx relies heavily on external contributions in order to make it the best database migration tool possible. Without the support of our 130+ contributors we wouldn't be where we are today! We encourage anyone to submit documentation enhancements and code.
Issues, feature requests and bugs should be submitted using the Github issue tool: https://github.com/robmorgan/phinx/issues.
This document briefly outlines the requirements to contribute code to Phinx.
Before you submit your pull request take a moment to answer the following questions.
Answering 'YES' to all questions will increase the likelihood of your PR being accepted!
- Have I implemented my feature for as many database adapters as possible?
- Does my new feature improve Phinx's performance or keep it consistent?
- Does my feature fit within the database migration space?
- Is the code entirely my own and free from any commercial licensing?
- Am I happy to release my code under the MIT license?
- Is my code formatted using the PSR-2 coding standard?
Note: We accept bug fixes much faster into our development branch than new features.
Great, so you want to contribute. Let's get started:
-
Start by forking Phinx on GitHub: https://github.com/robmorgan/phinx
-
Clone your repository to a local directory on your development box.
-
If you do not have Composer set up already, install it:
curl -sS https://getcomposer.org/installer | php
-
Change to your Phinx clone directory and pull the necessary dependencies:
php composer.phar install
-
Copy the
phpunit.xml.dist
template tophpunit.xml
and change the configuration to suit your environment. If you are not using any particular adapter you can disable it in thephpunit.xml
file. -
Run the unit tests locally to ensure they pass:
php vendor/bin/phpunit --config phpunit.xml
-
Write the code and unit tests for your bug fix or feature.
-
Add any relevant documentation.
-
Run the unit tests again and ensure they pass.
-
Open a pull request on the Github project page. Ensure the code is being merged into
master
.
If you do not wish to install MySQL and Postgres locally to run unit tests can use docker-compose which will start both database, install all development dependencies and run all unit tests.
To get started, just run docker-compose run --rm phinx
. It will download all
images, build & start development container and switch you to it. So just install dependencies with composer update --prefer-lowest
and run unittests with vendor/bin/phpunit
.
The Phinx documentation is stored in the docs directory using the RestructedText
format. All documentation merged to master
is automatically published to the Phinx documentation site available at: http://docs.phinx.org.