Jonathan Wakely wrote:
If you're going to have such a rule, you might as well just get rid of the two branch model and just use a trunk-based git workflow. So you work on develop, and then at some point you create a release branch from develop, call it boost_1_84_0 and that release branch is used for the release.
That's what we used to do when we still used svn. We switched away from it. The idea of the current model is that master is the release-ready branch at all times, and develop is the unstable branch that may or may not be in a good state. Branching off for release from an unstable branch made releases unpredictable, there was no way to tell how long the release branch would take to stabilize. In principle we can switch to a model where we have no develop, master is, as now, stable and release-ready at all times (at least in theory), and all development happens on feature branches. This works for independent libraries, but integration testing has to happen somewhere. Currently it happens on develop (at least in theory.)