Short story:
What are some of workflows regarding the database teams are using to develop locally and then push to a central dev site. When each dev is creating their own templates and variables (not to mention content), how is that database being merged with others without erasing the work one or the other has done? I've seen at least one attempt at a mysql-query recorder, that I could then use to insert into the parent database instead of trying to merge it. I've used those for WordPress and know those aren't always 100%. Are there any other workflows?
Long story:
I'm new to developing with a team. The team I'm working with is new to best practices and really working together. In the past it's been pretty much every for themselves, a lot of cowboy coding through FTP on live sites, and more. However they brought me on because we are now getting larger projects. Great.
First I introduce them to git. Everything is great. They understand the benefits, they get use to develop locally, push to staging, then push to master. We use dploy.io to actually make the deployments from our git branches. Again, great.
Now we have a few sites that several devs are working on. Git merges, pull requests, conflicts, no problem. However seeing that ExpressionEngine's core is the database, we start to see issues. Dev A has a copy of the database and so does Dev B. Both are making content changes as well as creating new templates and variables. Both databases can't make it to the staging deployment. We tried some database merging (I come from a back-end world and have no problem getting dirty with databases), however that can be so time intensive.
So we have a (almost) great current solution, using an online IDE. Through Cloud9 (c9.io) we are connecting via ssh to a VPS we have set up for Dev work. This way we are collaboratively working on the same files at the same time, as well as sharing the same database. There are no more git conflicts with each other, no more separate branches for each dev, no more database conflicts, etc. Life is grand. Until Cloud9 goes out for an hour one day. Then we see the error of our ways. What would we do if there was a serious deadline to meet tomorrow and we are left twiddling our thumbs because we can't connect? We could go back to an FTP workflow, but would seriously slow things down.
So this leads to my question: What are some of workflows regarding the database teams are using to develop locally and then push to a central dev site. When each dev is creating their own templates and variables (not to mention content), how is that database being merged with others without erasing the work one or the other has done? I've seen at least one attempt at a mysql-query recorder, that I could then use to insert into the parent database instead of trying to merge it. I've used those for WordPress and know those aren't always 100%. Are there any other workflows?