I do website development (primarily Drupal base sites) and have a workflow with:
- many developers working on their Local machines
- developers use git to merge their changes on a Development machine
- when the dev site hits a stable point, we push to a Staging server for the client to review
- and finally we make releases to the Production server
And git is moving the files nicely back and forth. My question is how do I one-up this and use git to migrate the database along with the files?
And once I am able to move dev databases up the ladder, how do I merge development databases with the active production database?
Most straightforward thing to start with is to just dump the database into one file and store it in the git as well as the sources. But be sure not to leak this file into the production webroot, so that some
schema.sqlis not easily available by HTTP. It’s convenient to store sources at/webrootand db at/dbsubdirectories of your repository, making the/webrootactual root of web server.You’ll then see some updates and merges, and even conflicts around this file — these should be resolved as usual you do to your code files.
After all merges and conflict resolutions of both schema code and executable code you should thoroughly test your application end-to-end.