Maintained inĀ https://www.notion.so/build-one/Versioning-c5a516c6826f4647ac7cffd4c5c0c846 |
SwatFlow is fully compatible with GitVersion and is, actually, the recommended versioning system.
As seen above, whenever we finish a release or a hotfix, we tag the commit with a version (ex. 1.1.0, 1.3.2, ...).
Each tag represents a production-ready deployable version of the project.
This works fine when your product is maintained in a single git projects, but becomes more complex when it's spread among multiple ones.
Regardless of having a single-project or multi-project product, each project should have an internal version.
In a single-project product, that internal project version can also be used as the product version, but this is not possible when multiple project are involved.
In this case, we need to have a separate product version. Similar to the project version, the product version can also be maintained through tags.
Below is an example for a product maintained in 3 different git projects:
![]() | The versions on the lines represent the corresponding project's internal release version, which is accesible through the corresponding tag. All the projects are tagged with the initial 1.0.0 version, which will be released as version 1.0.release of the product. A hotfix needs to be provided to 1.0.release, but the only required changes are in project1.
An additional hotfix is now required, so the next product version will be 1.0.hotfix.2.
It is decided that version 1.1.0 will be released. |