We have a web app for which we have a couple of corporate customers. We have recently decided to offer it as a SaaS app and to follow the lean approach (in parallel with our corporate offering). Which means we've got experiments on the go that might not make it into production.
Before we went lean we were happy with the following branching strategy (I believe it's pretty standard):
Now we have the following in addition to the above and it's not working all that well:
Our scenario now is that we need to release quick and often as the lean approach dictates, and when we get solid feedback on something arbitrary, then we need to productionize it and release it as soon as possible (off of the lean_release_branch).
The problem being we can't create a feature branch off of dev (as it is most likely unstable) and we can't create a feature branch off of lean_release_branch for two reasons:
Does anyone know of a better strategy for our setup?
Besides GitFlow nozari mentions, there's also GitHub Flow. The place I work at used that as a basis (master is always stable, develop in feature branches, pull request with review before merging). We deploy less often then GitHub does, so on master we use annotated tags to track releases and lightweight tags point to whatever commit is in staging/production right now. This is managed by the capistrano-deploytags Ruby gem.
Unless I'm reading your problem incorrectly, you could achieve the same with this strategy with less complexity in all those branches.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With