I think I have a peculiar scenario. We follow standard git flow in our organisation. Except, the release branch takes a bit long to be ready to be merged back into master and develop.
We used to block all feature branch merges to develop until the release branch is merged back into master and develop. However, when the team size grew, this has become understandably unacceptable. So we want to allow developers to carry on merging their feature branches back to develop even before the release branch is merged.
Now the issue arises when it is finally the time to merge the release branch. Say features f1 and f2 were on develop before the release r1 was cut. Since then, f3 and f4 were merged back into develop. Now, if we merge the release branch r1, the develop's timeline looks like this:
Merge commit of r1
Merge commit of f4
Merge commit of f3
Merge commit of f2
Merge commit of f1
This means when the next release r2 is cut, the commit history will include r1, f4 and f3. Something tells me this isn't right.
However, if we blocked merges to develop whilst the release branch was active, it would look a bit more organised with the release commit appearing exactly where it should be:
Merge commit of f4
Merge commit of f3
Merge commit of r1
Merge commit of f2
Merge commit of f1
What are my options here? I don't want to do an interactive rebase of develop with last x commits so that I can re-order the commits as that will make me do a force push to the develop branch (scary!).