3 ms·
I'm not a fan. I have never seen a statement of what it gains over gitworkflows(7) and similar (models that prepare releases in 'master', integrate in 'next' w
by jedbrown 13y ago
I'm not a fan. I have never seen a statement of what it gains over gitworkflows(7) and similar (models that prepare releases in 'master', integrate in 'next' which is eventually rewound, and support existing releases via 'maint'). The most critical difference is that git-flow eschews the integration process that allows new features to interact before they are merged to 'master'. Instead of having topic branches tested together in 'next', someone has to be make the difficult decision of whether a topic branch that has only been tested in isolation should be merged into 'develop' (or hotfixes into git-flow's 'master', which is most similar to 'maint' of
gitworkflows(7)).
This generally means that a git-flow 'develop' is less stable than a
gitworkflows(7) 'master', so it's more common to be working on a new
feature and find bugs that were there when you started. That's
disruptive to development and its unpleasant to users that would really
like the latest stuff that you think is actually ready for them to use.
Thus any decision to merge a topic branch comes with the pressure that any bugs introduced in the merge (possibly through indirect semantic conflicts with other work) will disrupt any developer starting new work between the merge and the time a fix is provided.
In contrast, merging to 'next' in gitworkflows(7) comes with relatively less pressure because bugs there only affect integration and eager users, but not new development. Furthermore, merges to 'master' come with knowledge that the feature has already been playing nicely in 'next', which contains everything in 'master' as well as some other new features.
I wrote a more extensive comparison in http://mail-archive.com/search?l=mid&q=87zjx4x417.fsf@mcs.anl.gov http://mail-archive.com/search?l=mid&q=87zjx4x417.fsf@mcs.an...
- aidenn0 13y agoI always use "develop" for integration. that is "develop" is git-flow's "next"
- jedbrown 13y agoNot the same at all. Git-flow is worse than merging 'next' into 'master' before a release, which is a huge no-no. With gitworkflows(7), new topic branches start from 'master', merge to 'next' when thought to be complete, may receive additional patches while there (remerging to 'next'), and may fail to "graduate" to 'master' (either being discarded by reverting in 'next', or just not selected for this release). When complete, the topic branch is merged to 'master'. 'next' is periodically discarded (usually after a release). This means that the sometimes messy and occasionally broken state in 'next' does not remain in the history and is not used for new development, and some parts of 'next' will not be part of the permanent history. With gitworkflows(7), the history that eventually makes it to 'master' is only complete and fully-tested features (demonstrably so, because it has been in 'next' already). Gitworkflows(7) gives you cleaner history, a more stable 'master', and makes releasing less disruptive.
- aidenn0 13y agoThanks for the clarification