Branching Model
Branching Model
Since Version 3.0.0 a branching model based on https://nvie.com/posts/a-successful-git-branching-model/ is used.
Overview
tag tag tag
v v v
master #--------------------------------#--------------------#--- stable
\ / /
(release) \ #--#--# #--# locally prepare merge to master
\ / /
develop ----#--#------#--#--#--#----#-------#--#-------#---------- public dev branch
\ /
(feature) #--# local dev branches
Branches
master
The public master branch always reflects the currently released actual version, i.e. a production-ready state.
Merges to master must always cause a new release.
develop
The public develop branch reflects the state of the latest stable development state. The code here is tested but waiting for more changes to accumulate, before a new release is triggered.
release
The release branch is a temporary preparation branch. It is always branched from the develop branch, when enough changes piled up. This is the last stage where version numbers are updated, final tests are made and changelog is finalised before it is merged to master.
releasebranches are named release-x.y.z. In most cases they are not pushed to GitHub.
feature
feature branches are temporary branches for creating features, that can not be implemented directly in the develop branch. feature branches are branched/merged from/to develop.
In most cases they are not pushed to GitHub and are named depending on the feature they implement.