I am designing a Git
branching strategy for our codebase. Till now, we have managed with a single master branch but given the size of the team and of our codebase, I want to enforce some basic Git
discipline.
I am following the regular Git branching strategy. I have a production-ready master branch with the HEAD tagged as 2.224.0
. Now say I checkout a development branch from this, and start developing my features. Note that the development artefacts are tagged over the tag of the HEAD
of the master:
--->[Feature A(2.225.0)]---->[Feature B (2.226.0) (Signed-off by QA)]---->[Feature A Bug-fix (2.226.1) (Signed-off by QA)]
Now say I want to give a release containing Feature A
and Feature B
. What should be the release version of the artefact? Should I give a release with 2.226.1
? This doesn't look fine to me because these are two new features from the perspective of the master
branch. Ideally, I would increment the last number of the tag in master
only when there is a hot-fix (for which I have a separate hot-fix branch). If I go with 2.227.0
, my tag and release versions become inconsistent.