If you have only one development branch, it is more efficient to make it be a chest and separate the release branch every time you just want to stabilize the release. If you have several function projects, you can have a branch for each of them with CI settings on them. Once they are completed, you will merge them one by one into the trunk, and as soon as everything is combined, you will go to the first scenario in which you again separate the release branch from the trunk.
In any case, you do not keep the development branch between releases. You want to finish it and start a new one for development for the next version. Thus, some features may be forked during multiple releases if they take longer. But you do not have too much mess in your branches of development.
You can branch out development branches for the next version as soon as you branch out a release branch or even earlier if you want, but as a rule, it is a good idea, as soon as you stabilize the release, merge changes from the release branch into the main and from there to the development industry, if you do that. If you expect branching after release, you avoid a few merges there, but you slow down development.
Jiri klouda
source share