Versioning
==========
This version policy closely follows the
`Semantic Versioning `_ model. Formatting of pre-release
designations and build information does not exactly follow the Semantic
Versioning model, but instead follows established standards for Python and RPM
packaging.
Python Package Version
----------------------
The version of Pulp's Python packages should follow the
`PEP-386 `_ scheme for
setuptools utilizing a "X.Y.Z" pattern as major, minor and patch versions
respectively.
Alpha, beta, and release candidate versions will be designated by a single
character "a", "b" or "c" after the patch number, for example "2.1.0a".
Pulp is not currently distributed as Python packages, but instead as RPM
packages. Thus, there may not be an effort to distinguish between different
versions of an alpha, beta or release candidate. Instead, the version is likely
to stay at something like "2.1.0a" for some period of time before moving to
"2.1.0b", etc. Put another way, pre-release version numbers may not be incremented
regularly.
RPM Package Version
-------------------
Pulp's RPM packages should follow the version scheme
`prescribed by Fedora `_.
This scheme is very similar to the Python version scheme, except the pre-release
designations go in the release field.
For all pre-release versions, the first item of the "release" field will be "0".
The second item will increment with each build. The third item will be one of
"alpha", "beta", and "rc".
For each released version, the "release" field will begin at "1" and increment
with new builds of the same version.
Lifecycle Example
-----------------
=================== ======== =====
Stage Python RPM
=================== ======== =====
Release 2.0.0 2.0.0-1
New Build 2.0.0 2.0.0-2
Bug Fix Beta 2.0.1b 2.0.1-0.1.beta
Bug Fix Release 2.0.1 2.0.1-1
Begin Minor Release 2.1.0a 2.1.0-0.1.alpha
More Work 2.1.0a 2.1.0-0.2.alpha
Feature Complete 2.1.0b 2.1.0-0.3.beta
More Work 2.1.0b 2.1.0-0.4.beta
Release Candidate 2.1.0c 2.1.0-0.5.rc
Release Candidate 2.1.0c 2.1.0-0.6.rc
Release 2.1.0 2.1.0-1
=================== ======== =====