We are using Trellis and it works great, be there is a overall workflow issue that we have the the database.
Initially we started writing DB migrations by using phinx and it was great to have them, as by using git pull and then phinx migrate, each developer had the minimum needed data and settings to start his/her magic.
But then we came to the moment, where we use plugins (of course ) but conflicts emerge - If dev. 1 makes some changes to a plugin from the administration, that goes to the database. If in the same time dev 2. does some other changes (either on that plugin or installs other and configures it) we have two databases with equally important changes which can’t be merged in any easy way.
So by some research and talks on a Wordcamp this weekend, these are some solutions
1) For all devs to use a common DB - this won’t work because a) some serialized data may just not work on the local enviroments, b) if someone fiddles up with some setting, he/she can break the site for all the other devs.
2) To use some DB comparison tool, to check and export any changes done locally when setting up a plugin (like DB Forge, or Toad for MySQL) which is ok for the initial config, but then if you make multiple small changes to make it perfect it becomes hell
3) To maintain a strict workflow as this one
For pulling and pushing the DB we use the awesome WP Sync DB, but there is still issues - any initial configuration is done on staging, and in order to fiddle up with the setting, the Dev pull the DB locally and does them there. When he/she finishes he does does changes again manually to the staging server (that way, he/she won’t overwrite the changes of anyone else, but work is done twice, which is not very effective).
When a new release is in order, we push to production all the settings tables, but skip the data tables. On production the customer is locked out from changing any plugin settings.
Is there any better way to manage this situation ?
Other options are to use Dictator to maintain the “state” of each devs db, and be able to solve conflicts with plain git (but , or maybe use VersionPress but it is in an early stage and the list of currently supported plugins is limited?