Our git branching model:
- The main Github branch is always deployable, and CircleCI must be always green on that branch.
- All of our work will be branched off from the main branch.
- Pull requests will be based on the main branch.
- When your pull request is ready, please merge your current branch to staging and deploy to our Heroku staging server, so all of us can verify the story. If there is a conflict when merging to staging , please solve it there as it is very likely that you will see the same conflict when merging to main later. But please, do NOT push force our staging branch because it may cause problems to other members. If your merge to staging breaks other members' code, please fix them together.
- When the product owner confirms the feature works as expected on our staging server (the Pivotal Tracker story is accepted), and CircleCI is green in the pull request, we can merge the code to main and close the pull request. We should delete the merged branch after that.
- The staging branch can be merged from more than one "wip" (Work in Progress) branch to be demoed on the staging server at the same time.
- We can choose when we want to deploy the main branch to production.
- We should also keep our staging branch to be updated with our main branch, particularly after a production deployment, to reflect that our staging server should always have our current working production code there.