On my current project we will have two release cycle. One every two weeks which contains new features and bug fix. There other one will be a few time a year, probably every three months. It will deliver features that have a big impact on user experience and require training from our agents/supports staff.

To simplify our code management, we will use features flags for the second release cycle. That will allow us to have only one branch for development(master) and one for production. Every change on master will always be deployed to production. With the flags, we will enable features only when the whole team is ready.