Today I'm working with a trunk-based development styled branching strategy, which is not optimal from a deployment and collaboration perspective for different reasons. I have an idea to replace this with something else, for the work we're doing with our Azure based data platform consisting of several different Azure products (with different code masses).
To support CI/CD and flexible collaboration, I do not want to have release branches and I do not ever want to merge a development typed collaboration branch to the main/master branch.
My idea is to have the 'master' branch correspond to the code running in production, and to create a (basically forever living) collaboration branch named 'development' based on master (or possibly a fork?). Then for the ongoing development work the developers would create a feature branch based on master, that will be merged with pull request into the development branch once the feature development is done and the code should be deployed to DEV/TEST environment. Once the feature has been tested, the same feature branch will merged with another pull request into the master branch, for deployment to production.
I can see one obvious downside with this branching strategy, which is that merge conflicts would have to be solved two times. Once when merging to the development branch, and again when merging to master.
Are there any other downsides with this type of branching strategy?