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.
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:
- Useful link to quickly get what is semantic versioning : https://github.com/dbrock/semver-howto
- Exhaustive definition of Semantic versioning : https://semver.org/
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.
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