Git Branching Model

In this package we mostly followed A successful Git branching model proposed by Vincent Driessen. Here are the summary of the branches:

  • master: master branch only hosts the released software packages. Only project maintainers have write access on the master branch.

  • develop: develop branch is considered the main branch where the source code of HEAD always reflects a state with the latest delivered development changes for the next release.

  • supporting branch: There are different supporting branches, three main supporting branches that we suggest the contributors to follow the naming convention includes:

    • feature: we start a new feature branch to add new features to software. The naming convention is iss[issue_number]_short_description. For example, if I need to add rotation of time series to the package and the issue number is 12, iss12_add_rotation can be a valid git branch name. We start it with issue number to go back and take a look at issue details if necessary. Although, feature branches are temporary, this naming convention helps developer to understand the situation while working on the codebase.

    • hotfix: hotfix branches will be only used for fixing a bug on a released package. After fixing the bug the third digit of the version number should be incremented by one. For example, 1.4.2 –> 1.4.3. These branches will be prefixed with hotfix and followed by upcoming version number (e.g., in this case hotfix_1.4.3)

    • release: Release branches support preparation of a new production release. As long as the community is not working on different releases at the same time (e.g., pre-alpha, alpha, beta, stable, and so on), we do not use release branch.