Code Versioning

From Team 449 Wiki

Team 449 uses this SemVer based version tagging system to maintain quality, compatible code.

Central Repo

The library of reusable code will use strict Semantic Versioning. It will enforce strict compatibility between major releases.

Build Season/Project Repos

During initial development (first few weeks of build season), features will be implemented on separate branches. Once they are in a usable state that can integrate with the main branch, they are merged in and versioned with a new minor release. Bugfixes are patches. Once the full code complement is run for the first time, we go to v1.0.0. After that, adding features is a major release, modifying features is a minor release, and bugfixes are patches. Code bodies run at competitions/events will have tags appended by "-<event name>" (e.g. "v3.4.5-districtchamps", "v7.8.9-makerfair"). Build season/project repos will specify a version of the central repo to use as a dependency. This means that as we create new non-backwards compatible major releases of the central repo without needing to rewrite old robots' code to run them.

Tagging

We will use the built-in git tag feature and display major release number on the dashboard.

Source Releases

We will provide separate source releases for competition and outreach events. These will not be released until they are thoroughly tested.