I need help with the workflow that is best suitable for our needs. We are a 3-4 person team and are working on 4 different projects.
We have three main branches:
- master - deployable production branch
- staging - features under QA on live data
- dev - features under QA on test data
Then for each feature, we create a feature branch
What we need:
- Sometimes we would like to create a release (for many features that have something in common) and would be deployed in the end of the month.
- Sometimes we would like to deploy a specific feature/change (without creating a release). This is what we do most of the time.
Now to the workflow:
- I start working on some feature. I create a feature branch off from dev.
- I finish my feature (with 30 commits).
- I squash merge my feature into dev - so it becomes just one commit.
- The feature is automatically deployed to a testing environment and QA tests out my feature on test data.
- The feature tested OK, so I cherry-pick my feature commit hash to a staging branch. The feature is automatically deployed to a staging environment and QA tests out my feature on live data.
- The feature passes QA (test and staging) and is either cherry-picked to master or to a release branch, which will be merged with master in the end of the month.
Here's a picture explaining what I have in mind:
Does this all make sense? Is there a better way to achieve this goal? Thanks for your time.