Version 75 (modified by 12 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 since we have not done that (with the exception of the first release). 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.
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.
Creating a 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):
- Mark the new minor series in
NEWS
See the end for copyrights and conditions. +svndigest A.B.x series from + http://dev.thep/lu.se/svndigest/svn/branches/A.B-stable + Version A.B (released NOT YET)
commit the changes withsvn ci -m "preparing branch A.B-stable"
- Update copyright statements with commands
make check && ./bin/svncopyright -v
Examine the updates and commit changes with `svn ci -m "updating copyright statements"`
- Create a new minor branch using a one liner like
svn copy ^/trunk ^/branches/A.B-stable -m "New minor version A.B branch"
- Check out a wc of the new branch
svn co http://dev.thep.lu.se/svndigest/svn/branches/A.B-stable /path/to/svndigest-A.B.x
- Copy the cache from wc of trunk to wc of new branch. Due to #463 be sure to use
version 0.9pre or newer:
/path/to/svndigest-trunk/bin/svndigest-copy-cache -v -r /path/to/svndigest-trunk -t /path/to/svndigest-A.B.x
- Prepare the trunk for the next minor release
- Update version number in
m4/version.m4
. Locate and change the below linesm4_define([MINOR_VERSION], [B+1])
- Add an entry in
NEWS
version A.[B+1] (released NOT YET)
The date is set when version A.[B+1] is released.
- Commit changes to the repository,
svn ci -m "Bumping VERSION to A.[B+1]"
- Update version number in
Rolling a minor release
Before you start, make sure you have write access to sourceforge page and that
you can create checksum files, i.e., you need openssl
and md5
/md5sum
.
- Create a new milestone for next patch release A.B.1.
- Make sure that all commits are performed into to the trunk, such
as bumping version number(s) (version.m4),
acknowledge contributions (THANKS), update
file NEWS.
- Update version number in
m4/version.m4
. Locate and change the below linem4_define([SVNDIGEST_DEV_BUILD], [false])
- Update THANKS.
- Set the date for the new release in NEWS
version A.B (released 26 June 2007)
Make sure that the items in NEWS cover the new features of the release.
- Commit changes to the repository
svn ci -m "Preparing release A.B"
- Update copyright statements with commands
make ./bin/svncopyright -v
Examine the updates and commit changes with `svn ci -m "updating copyright statements"`
- Issue
svn update
to make entire wc to be in revisionHEAD
. 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.
Runmake make release
Fix potential problems.
- Create a tag using
make svn-tag
- Update wc to latest revision and create tarball
svn update make release
- Upload
svndigest-A.B.tar.gz
and md5 file to sourceforge using scp likescp svndigest-A.B.tar.gz svndigest-A.B.tar.gz.MD5 USER,svndigest@frs.sourceforge.net:/home/frs/project/s/sv/svndigest/.
- Update SubversionCheckout and WikiStart
- Update the section Latest stable release to reflect the new
version, that is
- Change the version number
- Update the package link to the new version
- Update link to NEWS file to
source:tags/A.B/NEWS
- Change the version number
- In section svndigest latest release update link to
[source:tags/A.B/NEWS NEWS]
and modify the svn commands tosvn checkout http://dev.thep.lu.se/svndigest/svn/tags/A.B svndigest-A.B
svn switch http://dev.thep.lu.se/svndigest/svn/tags/A.B
- In section svndigest stable update link to
[milestone:"svndigest A.B.1" A.B.1]
and modify the svn commands tosvn checkout http://dev.thep.lu.se/svndigest/svn/branches/A.B-stable svndigest-A.B
svn switch http://dev.thep.lu.se/svndigest/svn/branches/A.B-stable
- In section svndigest devel update link to
[milestone:"svndigest A.B+1" A.B+1]
.
- On WikiStart update links source:branches/A.B-stable/doc/readme.txt,
source:tags/A.B/NEWS, source:branches/A.B-stable/README,
and also make sure that list of features is up to
date.
- Update the section Latest stable release to reflect the new
version, that is
- Update the version list in Trac using the
trac-admin tool.
Remember to set the date
- Close the milestone
associated with the release and replace
head
with appropriate revision.
- Merge the release into the trunk. To avoid confusion and
minimize the risk of loosing fixes, this step is only performed by
the Merge Master.
- Go to a pristine trunk WC.
cd /path/to/svndigest-trunk svn update svn diff
- Merge changes into trunk WC.
svn merge ^/branches/A.B-stable
- Resolve all conflicts. Run tests and perform all other
appropriate tests to make sure that the merge does not create
havoc. Typically changes in
m4/version.m4
are problematic so check this file extra carefully.
- Commit changes to the trunk branch.
svn commit -m "Merged release A.B to the trunk."
- Go to a pristine trunk WC.
- Prepare the minor branch for the first patch release
- Update version number in
version.m4
. Locate and change the below linem4_define([PATCH_VERSION], [1]) m4_define([SVNDIGEST_DEV_BUILD], [true])
- Add an entry in
NEWS
version A.B.1 (released NOT YET)
The date is set when version A.B.1 is released.
- Commit changes to the repository,
svn ci -m "Bumping version"
- Update version number in
- Send an announcement to svndigest-users@…
using this
as template.
- Create a unified diff (
diff -u
) betweenPortfile.vA.B
andPortfile
in current port. Create a ticket svndigest A.B with type=update and keywords="haspatch maintainer". Attach the unified diff to newly created ticket.
Patch release procedure
This section describes what to do when publishing a patch release A.B.C.
Before you start, make sure you have write access to sourceforge page and that
you can create checksum files, i.e., you need openssl
and md5
/md5sum
.
- Create a new milestone for next patch release A.B.C+1
- Make sure that all commits are performed into to the branch, such
as bumping version number(s) (
version.m4
), acknowledge contributions (THANKS
), update fileNEWS
.
- Update version number in
m4/version.m4
. Locate and change the below linem4_define([SVNDIGEST_DEV_BUILD], [false])
- Update
THANKS
.
- Set the date for the new release in
NEWS
version A.B.C (released 27 June 2007)
Make sure that the items inNEWS
cover all important bug fixes of the release.
- Update version number in
- Commit changes to the repository,
svn ci -m "Preparing release A.B.C"
- Update copyright statements with commands
make ./bin/svncopyright -v
Examine the updates and commit changes with `svn ci -m "updating copyright statements"`.
- Issue
svn update
to make entire wc to be in revisionHEAD
. 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:
Runmake make release
Fix potential problems
- Create a tag using
make svn-tag
- Update wc to latest revision and create tarball
svn update make release
- Upload
svndigest-A.B.C.tar.gz
and md5 file to sourceforge using scp likescp svndigest-A.B.C.tar.gz svndigest-A.B.C.tar.gz.MD5 USER,svndigest@frs.sourceforge.net:/home/frs/project/s/sv/svndigest/.
- Update SubversionCheckout and WikiStart
- Update the section Latest stable release to reflect the new
version, that is
- Change the version number
- Update the package link to the new version
- Update link to NEWS file to
source:tags/A.B.C/NEWS
- Change the version number
- In section svndigest latest release update link to
[source:tags/A.B.C/NEWS NEWS]
and modify the svn commands tosvn checkout http://dev.thep.lu.se/svndigest/svn/tags/A.B.C svndigest-A.B.C
svn switch http://dev.thep.lu.se/svndigest/svn/tags/A.B.C
- In section svndigest stable update link to
[milestone:"svndigest A.B.[C+1]" A.B.[C+1]]
.
- On WikiStart update reference to explicit latest version number,
and links
[source:tags/A.B.C/NEWS NEWS]
.
- 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 in log link. - Update the version list in Trac using the
trac-admin tool.
Remember to set the date
- 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.
- go to a pristine trunk WC
cd /path/to/svndigest-trunk svn update svn diff
- 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
svn merge ^/branches/A.B-stable
- Resolve all conflicts. Run tests and perform all other
appropriate tests to make sure that the merge does not create
havoc. Note, changes in
version.m4
should typically not be merged into trunk.
- Commit changes to the trunk branch.
svn commit -m "Merged patch release A.B.1 to the trunk. Delta A.B.1 - A.B"
- go to a pristine trunk WC
- Prepare the minor branch for the next patch release
- Update version number in
m4/version.m4
. Locate and change the below linem4_define([PATCH_VERSION], [C+1]) m4_define([SVNDIGEST_DEV_BUILD], [true])
- Add an entry in
NEWS
version A.B.[C+1] (released DATE)
The date is set when version A.B.[C+1] is released.
- Commit changes to the repository,
svn ci -m "Changes for future release A.B.[C+1]"
- Update version number in
- Send an announcement to svndigest-users@…
using
announcement.txt
as template.
- Create a ticket svndigest A.B.C with type=update, keywords="haspatch maintainer", and port=svndigest.
Attach
Portfile.diff
to newly created ticket.