Contribution Workflow#
The UltraZohm community uses the git-flow branching model since it is easy to apply (more info: Atlassian, Gitflow cheat sheet).
In addition to the git-flow model, Pull Request are used for all merges.
See the Atlassian tutorial for additional information.
It is not possible to merge into the main or develop branches without a pull request.
UltraZohm Workflow#
Git-flow is supported by the gitflow extension as well as the GUI clients Sourcetree and GitKraken.
Fig. 20 Visualization of git-flow.#
Fig. 20 shows the gitflow. The following branches are used:
mainExists forever
Stable Version
Version tag after each merge
developExists forever
Current development version
Pull request to merge to
mainIncrement the second number of the version tag by one
featureCreated by contributors to implement features
Pull request to merge into develop
Deleted after pull request is accepted
hotfixCreated by maintainers to fix bugs in
mainPull request to merge to
mainIncrement the last number of the version tag by one
Pull request to merge to
developDeleted after both pull requests are accepted
releaseCreated by maintainers for major releases
Created by maintainers if merge conflicts occur in pull request from
developtomainResolve merge conflicts
Pull request to merge to
mainIncrement the first number of the version tag by one
Pull request to merge to
developDeleted after both pull requests are accepted
Warning
It is impossible to merge anything without a pull request into main or develop, nor is it possible to push changes to these branches!
Branch names#
The naming convention for the branches is as follows:
feature/featurenameBranch of type
featurefeaturenamedescribes what feature is implementedExample:
feature/pwm_module
hotfix/hotfixnameBranch of type
hotfixhotfixnamerefers to the bug which the contribution fixesExample:
hotfix/fix_pwm_counter_overflow
release/releasename_v000Branch of type
releasereleasenameshould describe what features are releasedContains the version number that will be the new tag for the
mainbranch
Version number#
The version number is the tag of the commits of the main branch.
Depending on how much the code changed, it is either a revision (only bug fixes were made and no new features are added), a new sub-version (at least one new feature is added), or a new major version (multiple new features, big changes).
v3.1.7
│ │ │
│ │ └───────── Revision: bug fixes, no new features (merged a hotfix)
│ └─────────── Minor release, at least one new feature
└───────────── Major release
Additional information#
Relevant resources for git-flow can be found here: