Versioning¶
The DREAM.3D version scheme is a set of 4 values. The first 3 values are integers while the last value is the first part of a SHA1 hash. An example is the following:
6.1.3.as34fd
The scheme is [major].[minor].[patch].[revision]
What Do Version Changes Indicate?¶
Major¶
Major user interface changes, file compatibility changes, or major API/ABI changes.
Minor¶
Minor API/ABI changes requiring recompiling of Plugins. Minor features added to user interface. No file compatibility changes.
Patch¶
Bugs fixed in any area, such as Filters, user interface, Plugins, APIs, documentation fixes and updates, etc. The patch version is calculated based on a git tag for the last minor release. This should NOT require other Plugins to be recompiled.
Revision¶
The revision is the git SHA1 hash for the commit that the release was based on. This string is always generated for the DREAM.3D project by the build system.
CMake and Version¶
CMake version 3.1 introduced project version variables. These variables are used by introducing a VERSION argument with [major].[minor]. Every project command in any CMake file should have this VERSION argument.
project(DREAM3DProj VERSION 5.6)
project(CoolPlugin VERSION 3.4)
If projects use the infrastructure codes that are provided with the DREAM.3D project, the git patch and revision numbers should be generated automatically. Otherwise, if git is not found, then a default set of versions will be generated.
Releasing DREAM.3D with Proper Version¶
Ensure EVERY piece of DREAM.3D compiles correctly, passes all tests, and generates packages correctly. After all of these tests pass THEN tag the repository with the version (given as "V[major].[minor]").