Release engineering is the collection of methods, tools and techniques for managing software product releases. Projects using CVS need to define a clear method to facilitate the addition and integration of new features. This document described my own release engineering methodology based on CVS (Heavily inspired by FreeBSD release engineering)
In order to maintain an always stable source tree. Two main branches are used. The STABLE branch and the CURRENT branch. The CURRENT branch is the CVS's default HEAD branch. The STABLE branch is created from the CURRENT branch.
New source is imported to the CURRENT branch by default. After testing the new source code in the CURRENT branch, it is merged to the STABLE branch.
New features that require important changes in the code are developed in a separate new branch (one branch per feature). The following rules must be followed :
cvs update -rHEAD cvs tag FTR_FEATURE_ROOT cvs tag -b -r FTR_FEATURE_ROOT -r FTR_FEATURE
cvs update -r FTR_FEATURE
cvs update -rFTR_FEATURE cvs tag FTR_FEATURE_MERGE_CURRENT cvs update -rHEAD cvs checkout -j FTR_FEATURE_MERGE_CURRENT
cvs update -rHEAD cvs tag FTR_FEATURE_MERGE_STABLE cvs update -rSTABLE cvs checkout -j FTR_FEATURE_MERGE_STABLE
If the source code is ready for a new release. Proceed as follows :
cvs update -rSTABLE cvs tag REL-X-X
cvs tag -d -B BRANCH-TAG
cvs admin -o 1.6.4.1:1.6.4.5 file.c