Versioning
Versioning is crucial in managing and maintaining software projects, ensuring that changes are systematically tracked and communicated. In Backlot, we follow a structured versioning scheme inspired by Semantic Versioning to provide clear and consistent updates.
Version Numbering
Our version numbers are structured as follows: MAJOR.MINOR.PATCH
MAJOR
The first number indicates the .NET version used:
1
= .NET 72
= .NET 83
= .NET 9etc.
MINOR
The second number indicates releases that contain breaking changes and new features.
PATCH
The third number is for non-breaking bug fixes.
Guidelines for Versioning
Major and Minor Version Changes
Release Announcements: For all major and minor version changes, a release announcement is created to inform users of the new features or breaking changes.
Patch Releases
Release Comments: For all patch releases, a comment is added to the existing release announcement to document the fixes included.
Final Builds
Main Branch: Final builds are only executed on the main branch.
Tags and Releases: Every final version gets tagged and released on our Git repository. For more information on managing releases, see the GitHub Docs.
Development Process
Version Number Updates: When changes are merged into the development branch, the merger needs to update the version number as the first commit after the merge action. This can be done using the
build.ps1
script.Feature Development: When starting to develop a feature, the developer chooses a version number higher than the current origin. Feature releases are always built with the default build parameter (
Debug
), resulting in alpha version numbers for each build. Developers may choose to push these to the NuGet repository.
Branching and Releasing
Beta Versions: Once a beta version is released, a branch is created for the specific minor release. For example:
/release/v1.6
/release/v2.0
Main Branch Stability: The main branch contains the latest stable build (without a beta suffix). Releases on the main branch are tagged accordingly.
Merging: Versions are merged from the
/release/vX.X
branch to the main branch. The develop branch is merged into a/release/vX.X
branch.