UnifiedFlow: Git Branching Strategy
In this article, learn pros and cons of UnifiedFlow, as well as how to deploy stable features signed off by QA according to the release plan.
Join the DZone community and get the full member experience.
Join For FreePros
- Every branches fork from a stable state.
- Prevent side-effects (defect/ad-hoc/config) from merging develop into feature, release and main.
- Group stable features according to release plan.
- Easily remove features from release.
Cons
- Require optional merge branch if using with Pull-Request. PR will merge the target branch on your feature; may cause unknown side-effects and stall you for days to fix it.
- Multiple merge conflicts in develop and release.
Getting Started
init: main
fork: main -> develop
Features
fork: main -> feature
merge: develop <- feature
deploy: develop to SIT, test, and approve as Release Candidate by QA
Bug Fixes
fork: main -> bugfix
merge: develop <- bugfix
deploy: develop to SIT, test and approve as Release Candidate by QA
Releases
fork: main -> release
merge/squash: release <- {bugfix, feature}
deploy: release to UAT, test and sign off by QA
merge: main <- release
tag: {version: YY.MM.buildNumber}
deploy: main to PROD, test and verify by QA
Hot Fixes
fork: main -> hotfix
deploy: hotfix to UAT, test and verify by QA
merge/squash: main <- hotfix
tag: {version: YY.MM.buildNumber-hotfix}
deploy: main to PROD, test and verify by QA
Update Branches From Main (Stable) Not Develop (Unstable)
merge/rebase: main -> {feature, bugfix}
Published at DZone with permission of Putthiphong Boonphong. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments