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 is 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

How to use 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 its 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.kept around and a tag of the release is made.

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. Names of feature branches always start with the login of its developer followed by a slash and a descriptive feature name, as such: cds/label_placement