Version 9 (modified by 17 years ago) ( diff ) | ,
---|
Contents
Publishing a release
These instructions cover how to release minor and patch releases in a project that uses trac/subversion for revision control and project management. How to release major releases is not covered yet. Release numbering follows the normal convention of major.minor.patch and the APR (see http://apr.apache.org/versioning.html) guidelines for releases are used.
The main development is performed in the trunk branch of the repository. A new release branch is created for each minor release from the trunk and patch releases are snapshots of the minor release branch. This implies that patch work is performed in the minor release branch, and changes made release branch is transferred to the trunk every time a new patch release is made. Remember, patch work should be limited to bug fixes and important fixes only leaving development of new features and designs to the trunk branch, or other special branches.
Releases should only be performed by an appointed member of the team, the Release Manager, and merges should be performed by a Merge Manager. Of course, one team member can be both managers, thus becoming the Release and Merge Manager.
Minor release procedure
This section describes what to do when publishing a minor release.
- Make sure that all commits are performed into to the trunk, such
as bumping version number(s) (build.xml),
acknowledge contributions (credits.txt),
API changes that may affect backwards compatibility
(API changes),
and other files as necessary.
- Update version number in build.xml. Locate and change the
below line
<property name="base.minorversion" value="B" />
- Update credits.txt. Remember, ego and vanity is the currency of open
source projects. Well, there are other reasons for open source
projects but credits.txt is for boosting peoples' ego.
- Make sure that the API incompatibility list is up to date
API changes.
This document should really be changed as the API changes, please do not leave this task to be
done at the last minute of release.
- Make other changes as needed. If items are missing from this list, please add them with proper
instructions for the items changes maintenance.
- Commit changes to the repository,
svn ci -m "Preparing release A.B"
- Update version number in build.xml. Locate and change the
below line
- Update copyright statements with the below command. Make sure that you do not break file
encodings such as UTF-8 and what not. One example, do not use non-US characters for developer
names in the source:trunk/.svndigest/config file.
./bin/svndigest --copyright --no-report
Examine the updates and commit changes withsvn ci -m "updating copyright statements"
. For this step svndigest is obviously needed.
- Needless to say, make sure that the program is in a state to be
released; make sure that all the tests pass, test the distribution
package, and perform all other release tests you think is
appropriate:
Please add test command sequence here
If you fail in this step, please resolve the issues and restart these procedures.
- Create a tag using a one liner like
svn copy http://lev.thep.lu.se/repository/base/trunk \ http://lev.thep.lu.se/repository/base/tags/A.B \ -m "Tagging version A.B"
- Update the version list in Trac using the
trac-admin tool.
- Create a distribution package:
svn co http://lev.thep.lu.se/repository/base/tags/A.B A.B_dist cd A.B_dist ant package
Upload the new packages to the download area. RemoveA.B_dist
directory.
- Create a new minor branch using a one liner like
svn copy http://lev.thep.lu.se/repository/base/tags/A.B \ http://lev.thep.lu.se/repository/base/branches/A.B-stable \ -m "New minor version A.B branch"
Prepare the minor branch for the first patch release
- Check out the new minor branch
svn co http://lev.thep.lu.se/repository/base/branches/A.B-stable A.B
- Update version number in
build.xml
. Locate and change the below line<property name="base.maintenanceversion" value="1pre" />
- Commit changes to the repository,
svn ci -m "Changes for future release A.B.1"
- Check out the new minor branch
- Prepare the trunk for the next minor release
- Update version number in
build.xml
. Locate and change the below line<property name="base.minorversion" value="B+1" />
- Commit changes to the repository,
svn ci -m "Changes for future release A.[B+1]"
- Update version number in
- Update DownloadPage
- Update the section Latest stable release to reflect the new
version, that is
- Change the version number
- Update the package links to the new version
- Change the version number
- In section BASE latest release modify the svn command to
svn checkout http://lev.thep.lu.se/repository/BASE/tags/A.B base-A.B
- In section BASE stable update link to
[milestone:A.B.1 A.B.1]
and modify the svn command tosvn checkout http://lev.thep.lu.se/repository/base/branches/A.B-stable base-A.B
- In section BASE devel update link to
[milestone:A.B+1 A.B+1]
.
- Add a Base A.B subsection in the All packaged BASE releases section.
- Update the section Latest stable release to reflect the new
version, that is
- Close the milestone
associated with the release and replace
head
with appropriate revision. Add a new milestone as needed (with an associated log link like Revision Log: log:branches/webservices@3001:head in the description field).
Patch release procedure
This section describes what to do when publishing a patch release A.B.C.
- Make sure that all commits are performed into to the trunk, such
as bumping version number(s) (build.xml),
acknowledge contributions (credits.txt),
API changes that may affect backwards compatibility
(API changes),
and other files as necessary.
- Update version number in
build.xml
. Locate and change the below line<property name="base.maintenanceversion" value="C" />
- Update
credits.txt
.
- Make sure that the API incompatibility list is up to date
API changes.
This document should really be changed as the API changes, please do not leave this task to be
done at the last minute of release.
- Make other changes as needed. If items are missing from this list, please add them with proper
instructions for the items changes maintenance.
- Commit changes to the repository,
svn ci -m "Preparing release A.B.C"
- Update version number in
- Update copyright statements with the below command. Make sure that you do not break file
encodings such as UTF-8 and what not. One example, do not use non-US characters for developer
names in the source:trunk/.svndigest/config file.
./bin/svndigest --copyright --no-report
Examine the updates and commit changes withsvn ci -m "updating copyright statements"
. For this step svndigest is obviously needed.
- Needless to say, make sure that the program is in a state to be
released; make sure that all the tests pass, test the distribution
package, and perform all other release tests you think is
appropriate:
Please add test command sequence here
If you fail in this step, please resolve the issues and restart these procedures.
- Create a tag using a one liner like
svn copy http://lev.thep.lu.se/repository/BASE/branches/A.B-stable \ http://lev.thep.lu.se/repository/base/tags/A.B.C \ -m "Tagging version A.B.C"
- Update the version list in Trac using the
trac-admin tool.
- Create a distribution package:
svn co http://lev.thep.lu.se/repository/base/tags/A.B.C A.B.C_dist cd A.B.C_dist ant package
Upload the new packages to the download area. RemoveA.B.C_dist
directory.
- Prepare the minor branch for the next patch release
- Update version number in
build.xml
. Locate and change the below line<property name="base.maintenanceversion" value="[C+1]" />
- Commit changes to the repository,
svn ci -m "Changes for future release A.B.[C+1]"
- Update version number in
- Update DownloadPage
- Update the section Latest stable release to reflect the new
version, that is
- Change the version number
- Update the package links to the new version
- Change the version number
- In section base latest release modify the svn command to
svn checkout http://lev.thep.lu.se/repository/base/tags/A.B.C base-A.B.C
- In section base stable update link to
[milestone:A.B.[C+1] A.B.[C+1]]
.
- Add a new entry to the Base A.B subsection in the All packaged BASE releases
section.
- Update the section Latest stable release to reflect the new
version, that is
- Merge the patch release into the trunk. To avoid confusion and
minimize the risk of loosing fixes, this step is only performed by
the Merge Master. (Johan Enell is currently Merge Master and as the master
he knows what he is doing.)
- Checkout a pristine version of the trunk.
svn checkout http://lev.thep.lu.se/repository/base/trunk trunk_merge
- Merge changes into trunk. In this example the diffence between a
minor release tag and the first patch release tag is merged into
the trunk WC
cd trunk_merge svn merge http://lev.thep.lu.se/repository/base/tags/A.B \ http://lev.thep.lu.se/repository/base/tags/A.B.1
- Resolve all conflicts. Run tests and perform all other
appropriate tests to make sure that the merge does not create
havoc. (run TestAll and perform an installation.)
- Commit changes to the trunk branch.
svn commit -m "Merged patch release A.B.1 to the trunk. Delta A.B.1 - A.B"
- Checkout a pristine version of the trunk.
- Performing this step is to acnkowledge that the merge has been performed.
Close the milestone associated with the release and replacehead
with appropriate revision in log link. Add a new milestone as needed (with an associated log link like Revision Log: log:branches/webservices@3001:head in the description field).