| Version 17 (modified by thomasb, 12 months ago) (diff) |
|---|
How do we release a new version of Roundcube? This document aims to provide an answer.
Creating a new release
Versioning
Syntax: x.y.z
- x = major
- y = minor
- z = fix (0 can be omitted)
1. Creating a release branch
- Copy current master into a release branch
git checkout master git checkout -b release-x.y git push origin release-x.y git config branch.release-x.y.merge refs/heads/release-x.y git config branch.release-x.y.remote origin
- Remove development stuff:
git rm bin/dumpschema.sh bin/makedoc.sh tests
- edit CHANGELOG: only keep the changes since last release
- edit README: remove the UNSTABLE disclaimer
- bump up version in index.php
- bump up version in program/include/iniset.php
- commit the changes
git commit -m "Remove development stuff and update versions" git push
2. Create Package
Major Relase
The steps to take are basically
- clone the release branch from GIT
- compress the JavaScript files using the Closure Compiler
- remove test files and .git meta data
- create package archive
- distribute the release package on SourceForge
The process of creating the tarball is packed in a Makefile. Get it from gist.github.com and execute
make [GITBRANCH=release-x.y VERSION=x.y] dist
This will produce a tarball named roundcubemail-x.y.tar.gz which can be distributed.
Minor Release or Hotfix
- commit changes to the existing release branch
- repeat the packaging and distribution process
- adjust naming in case of a hotfix or patch
- supply a patch in addition:
git diff <last-rev>..HEAD > ./roundcubemail-patch-x.y.z.patch gzip ./roundcubemail-patch-x.y.z.patch
- Distribute patch on SourceForge
2.1 Create GPL package
GPL packages are actually the same as the default package but without PEAR and other library files included. To create such a release package, use the above mentioned Makefile and execute
make [GITBRANCH=release-x.y VERSION=x.y] dependent
3. Tagging released files
git checkout release-x.y git tag -a vy.y.z -m "Tagging files for x.y.z"
The differences between branches and tags are the following:
- branch may be "patched" or "hotfixed"
- a tag is just a snapshot and may not be altered
- in case you apply a fix to a branch, please create a new tag from it
4. Announcements
- update downloads page on roundcube.net
- write news entry on SourceForge
- post notification to announce@, dev@ and users@
- update project page on freshmeat.net
- post on Twitter (Till)
