Versiebeheer

Release cycle


Alpha

Alpha is nog niet af, zodra het voor het eerst doet wat het moet doen wordt het Beta.

Beta

Vanaf dat de Alpha naar Beta gaat is dit een verzameling features die goed werken, maar nog niet persee uitgebreid op bugs is getest. Eens in de zo veel tijd wordt hier een bughunt/hackaton op losgelaten waardoor het stable wordt gemaakt.

Stable

Aan het einde van een hackaton is de huidige Beta versie ALTIJD stable geworden daardoor. Ook al zijn alle taken voor die hackaton nog niet klaar. Bij een stable worden alleen maar bugfixes toegepast in de volgende situatie:

  • De bug komt voor in features die in de stable voorkomt.
  • De bug is op te lossen zonder de functionaliteit te herzien.
  • De bug heeft genoeg prioriteit om een nieuwe stable release te kunnen verantwoorden.

Versienamen

<major-version>.<feature-version>.<revision-number>[-(alpha|beta)]

Alpha

0.0.#-alpha

De eerste versie van een nieuw systeem is altijd 0.0.1-alpha. Iedere alpha versie moet met major version 0 en feature version 0 beginnen. Nieuwe features en kleinere wijzigingen verhogen het revision number.

Beta

x.#.x-beta

De eerste beta versie is altijd 0.1.0-beta. Nieuwe features verhogen de feature-version en kleinere wijzigingen verhogen het revision-number.

Stable

x.0.#

Iedere keer dat beta over gaat in stable, verhoogt het major-version nummer van zowel de stable als de beta. De stable versie mag geen nieuwe features krijgen, en daarom is het feature-version nummer altijd 0. Kleinere wijzigingen verhogen het revision number.

Git

Branching

master

Zo lang het project in Alpha staat is mogen alle wijzigingen direct op de master branch gepushed worden. Op het moment dat een project in Beta is, moet een nieuwe feature in een aparte branch gezet worden tot het moment dat de feature “af” is. Een feature is af wanneer het aan dezelfde regels voldoet als een project dat van alpha naar beta mag. Zodra de feature af is wordt de feature-branch gemerged met de master branch, en dat veroorzaakt een version bump. Bugfixes en andere kleine wijzigingen mogen wel direct op de master branch gepushed worden.

stable

In de stable branch mag geen code worden gepushed anders dan wanneer deze een nieuwe stable tag heeft. Dit kan voor een revisie (kleine wijziging in de stable branch) of een nieuwe major versie (vanuit de master branch). De laatste commit in de stable branch heeft daarom altijd een stable tag.

feature branches

Dit zijn branches met nieuwe features voor de beta branch. Deze houden geen versie-nummer bij en worden genoemd naar de feature die zij willen implementeren.

Tagging

  • name: <major-version>.<feature-version>.<revision-number>[-(alpha|beta)]
  • title: Version <major-version>.<feature-version>.<revision-number>[ (Alpha|Beta)]

Archief benaming

<lowercase-name>-<tagname>.(tar.gz|zip)