= Release Procedure = Svndigest uses "MAJOR.MINOR.PATCH" release numbers, with the same guidelines as APR (see http://apr.apache.org/versioning.html). === Creating a release branch === A new release branch is created for each new major and minor release. So, for example, a new release branch is created when preparing to release version 1.0.0, or version 0.3.0. However, when preparing to release 0.3.1 (a patch-version increment), the release branch created at the time of 0.3.0 is used. If you are preparing for a patch release, then there is no release branch to create. You just pick up where you left off in the current minor version series release branch. Once people agree that a new release branch should be made, the Release Manager creates it with the following procedure (substitute A.B with the version you are preparing, eg. 0.3, or 1.0): 1. Edit `NEWS` on trunk to introduce a new section for the upcoming release. The section starts with: {{{ Version A.B (released ?? ????? 200X, from /branches/A.B-stable) http://lev.thep.lu.se/repository/svndigest/tags/release-A.B }}} Leave the release date blank for now. It will remain this way until rolling time. 2. Commit change `svn ci -m "add a new NEWS section for upcoming A.B release"` 3. Create a new release branch using a one liner like {{{ svn copy http://lev.thep.lu.se/repository/svndigest/trunk \ http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable \ -m "New branch for svndigest A.B.x" }}} 4. Update version number in `configure.ac` on trunk. The version number on trunk always reflects the major/minor version that will immediately follow the one for which you just created a branch (eg. 1.1.0 for the 1.0.x branch, and 0.4.0 for the 0.3.x branch). === Rolling a release === This section describes how to roll a release A.B.C. 1. Update files `NEWS` and `configure.ac` on release branch * Add text in `NEWS` what is new for this release * Update `configure.ac` setting ''devel'' to `false` * Issue `svn ci -m "adding NEWS text and preparing for release A.B.C"` 2. Issue `make distcheck` with appropriate configure options. 3. Create a tag with {{{ svn copy . http://lev.thep.lu.se/repository/svndigest/tags/A.B \ -m "Tagging version A.B.C" }}} 4. Create new source packages with `make dist`. Make the appropriate updates on DownloadPage including: * Upload gzipped tar file and update corresponding link. * Update link to NEWS file to `source:tags/A.B.C/NEWS` * In ''Svndigest latest release'' update to `[source:tags/A.B.C/NEWS NEWS]` and modify svn command to `svn checkout http://lev.thep.lu.se/repository/svndigest/tags/A.B.C svndigest-A.B.C` * In ''Svndigest stable'' update link to `[milestone:A.B.(C++) A.B.(C++)]dev` and modify svn command to `svn checkout http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable svndigest-A.B.(C++)dev` * In ''Svndigest devel'' modify svn command to `svn checkout http://lev.thep.lu.se/repository/svndigest/trunk svndigest-A.(B++).0dev` 5. Set ''devel'' to `true` in `configure.ac`. 6. Merge changes in release branch to trunk. * `cd path/to/release-branch` * Find revision (N) for latest merge: `svn log -r 1:HEAD | grep Merged` * Find head revision (M) in release branch: `svn info | grep Rev:` * `cd path/to/trunk` * `svn merge -r N:M http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable` * Run `make check` to make sure that the merge succeeded. * Commit changes to trunk: `svn commit -m "Merged log:branches/0.1-stable#N:M trunk."` 7. Update version in `configure.ac` on release branch to A.B.(C++). 8. Edit NEWS on trunk (and release branch) to introduce a new section for the upcoming release. The section starts with: {{{ Version A.B.0 (released ?? ????? 200X, from /branches/A.B-stable) http://lev.thep.lu.se/repository/svndigest/tags/A.B.(C++) }}} Leave the release date blank for now. It will remain this way until rolling time. 9. Update Trac: * Update the version list in Trac using the trac-admin tool, i.e., add version A.B * Close the milestone A.B and add a new milestones.