I'm working with a team on a project that has multiple releases for special customers ( They get custom features, therefore need their own release ) and I'm not sure what branching model to use?
I thought GitFlow seems alright, so I have a master branch ( which is used to roll out the release to non-special customers ), a dev Branch and create feature branches from the dev Branch. But what about the special release branches for the customers? Do they need their own dev branch as well to test the custom feature? Or do I make a new dev Branch that serves for all special release branches and only cherry pick those features after they've been tested on the dev Branch?
Another idea may be to fork the repo for every special release and handle the release on the newly created repo?
After thinking about it more and checking stuff out like .gitattributes, modules and forks I've decided to rethink the project structure and how we can do the releases. Everything I've mentioned above ( Forks, Extra Branches ) is tedious and not ideal, in fact, there is no ideal solution to this.
What do I do know?
I'm going for a simple gitflow-workflow and handle the individual releases with feature toggles in order to deliver different functionality to different customers ( that can include different CSS files for certain customers to make the application unique style wise or entire function modules which enable new functionality )