Composer and multiple branches

composer-php, php

Solution

You can maintain multiple versions of `composer.json` under different names:

- `composer.master.json`

- `composer.dev.json`

Then when you call `composer.phar install` or `composer.phar update`, you can preface the desired composer file to use:

- `COMPOSER=composer.master.json php composer.phar update`

- `COMPOSER=composer.dev.json php composer.phar update`

See the CLI docs.

Problem

I have a git project with 2 branches: - Master: Currently the "stable branch" but subjected to changed. Releases are tagged from there. - Devel: A development branch for the next version. This is merged into master when we think some features from here are quite stable. In master, I have a requirement in my `composer.json` that uses a specific version: ``` "require" : { "triagens/arangodb" : "1.2.1", "php" : ">=5.4.0" }, ``` In my devel branch, I would like to use the development version of the dependency: ``` "require" : { "triagens/arangodb" : "dev-devel", "php" : ">=5.4.0" }, ``` Effectively, when branches are switched, and `composer install` or `composer update` is run I would like to have composer update/change the dependencies to the appropriate versions. Since `composer install --dev` does not support having a different version of a dependency in `require-dev`, I cannot set the different version in the `require-dev` section. I would also prefer to not have a separate `composer.json` for each branch as merge would be quite painful. If you have multiple branches and each branch uses some version of a dependency, what's the best way to do this?

Original source