Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For KIELER, a central authoritative Git repository is hosted on the KIELER project management server. The typical workflow of a developer is to first commit his source code changes into his local repository before pushing them to the authoritative repository on the server. Until now the minimum requirements for newly committed source code were that it must not break the build. However, as Git provides strong support for branches, this feature will be utilised in future KIELER development. The new KIELER source code management process aims at always having a having a master branch which can be considered release-ready. This will be done by shifting the main KIELER development away from the master branch to feature branches. The following classes of branches are defined:

  • The master branch
  • Release branches
  • The production branch
  • Hotfix branches
  • Feature branches

Image Added

How to use branches

As we now know which kinds of branches there are in KIELER,  we will now learn how to use them

The master branch

The master branch is the authoritative branch for KIELER development. On the master branch only bugfixes and minor features are pushed directly. The master branch must always be in a release-ready state. This means that all features that are merged into the master branch should be stable and complete. Feature branches are forked by the developers from the master branch. Also, if a release is planned, a release branch is forked from the master branch prior to the release.

Release branches

Prior to each release a release branch is forked from the master branch. No development of features takes place there, only bugfixes are pushed to the release branch. After a release is made, the release branch is merged both into the production branch and into the master branch. Afterwards, the release branch is deleted.

The production branch

The production branch’s head is always the code of the most recent release. Furthermore, the production branch contains tags of all previous releases. No development takes place on the production branch, it only serves as a target for merges from release or hotfix branches.

Hotfix branches

If a severe bug is found in one of the releases and fixing cannot be postponed until the next release, a hotfix branch will be forked from the production branch. The bug is then fixed on the hotfix branch and the hotfix branch is merged back both into the production branch for a new minor revision and also into the master branch before it is deleted.

Feature branches

With respect to development, feature branches are the most important type of branches. All development takes place on feature branches. Only when a feature is considered complete and ready for release the corresponding feature branch is merged back into the master branch and deleted afterwards.