We use gitflow branching strategy for different reasons, one of them being complicated bureaucracy around releases.
We have environments: dev
, qa
, preprod
, prod
.
Once the developers finish their work in dev
branch, we create release
branch and trigger deployment to qa
.
After qa
process is done, we trigger deployment of the same branch to preprod
.
After tests in preprod
are finished, we deploy the same branch to prod
.
Issues arise when business asks to remove/add some features from release
branch, for example, after deploying to preprod
but before deploying to prod
. In that case, if its a simple commit or several of them, we can cherry-pick. But that gets complicated very soon.
Is there a general solution for this? And, is the solution technical or is it on the planning side like establishing a consensus: release
branch doesn't get deployed to production
until all the features that went into release
branch initially are ready?