Over time, I have come to feel this git workflow is more of an attempt to coerce git into a workflow that is familiar to users coming from subversion, rather than learning and understanding git's strengths. A corollary problems is that it mixes development workflow with release management - two disparate concerns that should be handled separately.
After a couple years of using this model, I have done away with using a develop or release branches whatsoever. Develop everything in feature branches, based on either the most recent production tag or the master branch, depending on if it is a hotfix or if it is new development work. A lot of people do not seem to understand you can just checkout a tag, so you do not need to keep a number of hotfix branches around for in-house repositories.
Now, it would be nice to develop a better tagging strategy for rolling updates to a web application, but, for the time being, simply using a stage and production tag work well enough. This is certainly suboptimal and can cause problems, and I cannot recommend doing so. Instead, use production and stage tags with either sane version numbers or simple timestamps. It would be best to only promote from staging to production, but that is not exactly necessary. Most of my thoughts on the release management side of things comes from Alex at The Daily WTF [1].
After a few release cycles, we decided to switch back to simple feature branches with a master that is always deployable.. modeled after GitHub's workflow:
http://scottchacon.com/2011/08/31/github-flow.html
We found GitFlow's benefits weren't enough to compensate for the added complexity and subpar GitHub integration.
I did just enter a shop where git is new to a lot of people. Kind of blew my mind but I've been in startup land for years and just came back to enterprise development.
[+] [-] sonnym|12 years ago|reply
After a couple years of using this model, I have done away with using a develop or release branches whatsoever. Develop everything in feature branches, based on either the most recent production tag or the master branch, depending on if it is a hotfix or if it is new development work. A lot of people do not seem to understand you can just checkout a tag, so you do not need to keep a number of hotfix branches around for in-house repositories.
Now, it would be nice to develop a better tagging strategy for rolling updates to a web application, but, for the time being, simply using a stage and production tag work well enough. This is certainly suboptimal and can cause problems, and I cannot recommend doing so. Instead, use production and stage tags with either sane version numbers or simple timestamps. It would be best to only promote from staging to production, but that is not exactly necessary. Most of my thoughts on the release management side of things comes from Alex at The Daily WTF [1].
1. http://thedailywtf.com/Articles/Release-Management-Done-Righ...
[+] [-] dustingetz|12 years ago|reply
The OP describes more or less the way Linux uses git.
[+] [-] gabrtv|12 years ago|reply
After a few release cycles, we decided to switch back to simple feature branches with a master that is always deployable.. modeled after GitHub's workflow: http://scottchacon.com/2011/08/31/github-flow.html
We found GitFlow's benefits weren't enough to compensate for the added complexity and subpar GitHub integration.
[+] [-] kstop|12 years ago|reply
$ git config --global --add merge.ff false
[+] [-] Alan01252|12 years ago|reply
There's a command line tool which helps you keep to this branching model. Available here.
https://github.com/nvie/gitflow
Unfortunately it seems to of been abandoned by the author. A more active fork is available here
https://github.com/petervanderdoes/gitflow
Note that if installing on Ubuntu using apt, you'll get the no longer maintained version.
This cheat sheet helped me get up and flowing fast.
http://danielkummer.github.io/git-flow-cheatsheet/
[+] [-] Aldo_MX|12 years ago|reply
[+] [-] EToS|12 years ago|reply
[+] [-] programminggeek|12 years ago|reply
[+] [-] ianstallings|12 years ago|reply
I did just enter a shop where git is new to a lot of people. Kind of blew my mind but I've been in startup land for years and just came back to enterprise development.
[+] [-] Flenser|12 years ago|reply
[+] [-] dutchbrit|12 years ago|reply
[+] [-] ams6110|12 years ago|reply
[+] [-] jlgreco|12 years ago|reply
I don't follow 'git flow', but git is flexible enough to allow you to develop your own style. Nothing is pressed on you.