Gitflow means using different branches to develop software. It was invented to help software projects cope with multiple developers making simultaneous changes to a single codebase.
It was a good thing when it was invented – better than merge conflicts – but it was only ever a workaround to a workaround. Namely how do you keep your software building and passing tests when there’s lots going on.
We needed a branching strategy like gitflow when Continuous Integration builds were slow and compute time was expensive and difficult to obtain. This was in the days before the cloud or SaaS build solutions.
Over the last ten years, wisdom has changed. Now we can provision hardware quickly or use a 3rd party build service. This means that instead of reviewing PRs, we can spend our time making tests faster and more automated.
So now, the need for a gated merge moment has passed. If you’re gating your automated testing or deployments, then by definition, you’re not doing continuous delivery.
Why is that a bad thing?
If you’re not doing continuous delivery, you’re not regularly delivering more value to your customers. With an approval process in the middle of your delivery pipeline, you’re only going as fast as the approval process.
This situation could arise or stay like this because of many reasons:
- You don’t have good-quality automated tests in place.
- You don’t trust your developers to make reliable changes.
- You fear what happens when software is released.
- You doubt your ability to deliver fast enough.
- You think the auditors won’t like it, and that you’ll somehow breach regulations.
- Many other reasons.
So instead, ask yourself a couple of questions:
- Does doing gitflow directly improve your software quality?
- Does doing gitflow make your process more secure and reliable?
Employing something different might help. It could be Trunk Based Development or even just a single integration and deployment build a day. Anything that takes out a manual step will help you deliver more business value, more regularly than before.
But don’t take my word for it. Gitflow is now legacy, according to its author. Perhaps it’s time to reevaluate.