blob: b9450626b40210c6eed191c60803fc7cc10ce1df [file] [view] [edit]
# Cobalt Versioning
A Cobalt version consists of two components: The Release Number and the Build
ID. Some real historical Cobalt version examples:
* `2.15147`
* `3.16138`
* `4.16134`
* `6.18971`
You get the idea. The number before the dot is the "Release Number." The number
after the dot is the "Build ID."
## Release Number
A "Cobalt release" is an official, tested version of Cobalt that is intended to
be deployable to production. The "Release Number" is a single counting number,
starting at "1" for our first release, and increasing by one for every release
thereafter. This number is checked into [`src/cobalt/version.h`](../version.h),
and represents **coarse** information about the state of the source tree when we
decided to do a release.
It is important to note that there are no point releases, or major or minor
releases. Each release gets its own unique counting number.
## Build ID
The Cobalt Build ID represents **fine-grained** information about the state of
the source tree for a given build. An internal Cobalt build server generates a
monotonically increasing number for each unique set of sources that it
sees. When an open-source release is published,
a [`src/cobalt/build/build.id`](../build/build.id) file is included that
specifies the build ID of that source release. The Cobalt team can reproduce the
exact sources for a given Build ID.
Note that since the Build ID always increases with time, it means that the
latest version of an older Cobalt release can have a higher Build ID than the
latest version of a new Cobalt release. An example from above: Cobalt `4.16134`
was produced earlier than Cobalt `3.16138`, thus has a lower Build ID.
## Other Reading
* [Cobalt Branching](branching.md)