Lustre versioning
=================
-0.0.1 2/19/2002 <braam@clusterfs.com>
-0.0.2 3/14/2002 <braam@clusterfs.com> describe branches / stable tag
-
This document describes versioning of source and binaries for Lustre.
-CVS
-===
+Versions
+========
+
+The Lustre build version is set in lustre/autoconf/lustre-version.ac
+file with the LUSTRE_MAJOR, LUSTRE_MINOR, LUSTRE_PATCH, and LUSTRE_FIX
+fields. These are used to generate the LUSTRE_VERSION string and the
+LUSTRE_VERSION_CODE in lustre/include/lustre_ver.h.
+
+LUSTRE_VERSION_CODE can be used in conjunction with OBD_OCD_VERSION()
+to conditionally enable functionality by Lustre version, or to mark
+some part of code obsolete when a future version of Lustre is built.
+It is preferable to mark code obsolete starting at the x.y.50 build
+so that it is removed early in the development cycle.
-Versions will have 4 digits:
- major.minor.patch.test
+Packages
+========
-Such versions will be tagged in CVS as:
- v1_2_11_7
-and referred to as:
- 1.2.11.7
-encoded as:
- 0x01021107
+Major releases should get a 3-digit version x.y.0, and if a maintenance
+release is needed it will increment the 3rd digit. During development,
+versions start at x.y.50 and increment toward the x.(y+1).0 release.
-Usage:
+Release candidate versions must have the proper build version for the
+release, but are tagged in Git as v2_1_0_RC1. Final release versions
+are tagged in Git as both v2_1_0_0 and 2.1.0.
+
+Usage:
------
-New numbers are used as follows:
+New numbers are used as follows:
-1. major:
+1. major:
- increased when major new functionality becomes available
-2. minor:
- - even: for each new release with new functionality
- - odd : when a new development cycle starts after a release
+2. minor:
+ - for each new release with new functionality
3. patch:
- - when a development snapshot or release update becomes available
- - all these are announced on lustre-devel@lists.sf.net
-4. test:
+ - for a stable maintenance release or development snapshot
+4. test:
- when developers feel it is time to exchange a named version
-What will run, what won't ?
+What will run, what won't ?
---------------------------
-1. If the test level is non-zero no guarantees of any kind are made.
+1. If the test level is non-zero, i.e. there are 4 digits in the
+ version, no guarantees of any kind are made.
-2. For three digit releases/tags the code should perform
+2. For three digit releases/tags the code should perform
according to the announcement.
-
-Moving tags
------------
-
-The last stable release will be tagged: CVS tag "stable"
-The last operational development snapshot will be CVS tag "dstable"
-
-Branches
---------
-
-For even minor releases a branch tag will be created. The branch tag
-will be of the form:
-
-bmajor_minor
-
-Note that the CVS head is where development is going. If developers
-use a branch they must eventually merge that back into the head.
-Typically this is done by importing changes into the branch and
-removing the sticky tags:
-
-cvs update -A
-
-fixing any conflicts and then committing.
\ No newline at end of file