As I wrote previously I will use GitFlow method and tool to manage my branch and my feature development. Furthermore, GitFlow is highly compatible with the semantic versioning framework that I will use also.

Semantic versioning

The semantic versioning framework defined a way to name versions and be readable and not ambiguous at first glance.

Here are the main principe:

  • the stable version follow the canvas vX.Y.Z
  • X is for major release
  • Y is for minor release
  • Z is for hotfix
  • Release candidate or development branch are suffixed with -something

Using semantic version allow everybody to know which kind of version he works on. In our case, the stable version will be released and tagged on the master branch following GitFlow workflow.

To go deeper on the subject, please follow those useful links:

GitFlow

GitFlow is really useful to manage the developments related to a feature in a dedicated branch and don’t impact the ongoing releases candidate, production release or hotfix.

Each feature, release candidate or hotfix use their own branch. It is possible to manage and test 2 hotfixes at the same time because they are developed in their own branch.

Here is a schema I found on datasift.github.io and publish at first on the website nvie.com own by Vincent Driessen the creator of GitFlow which give a full picture of GitFlow :

To handle GitFlow framework, I use the gitflow tool that you can install from github source : https://github.com/nvie/gitflow

To get a full and useful explanation about how GitFlow works, I advise you to read : https://datasift.github.io/gitflow/IntroducingGitFlow.html