Releasing new version

This procedure must be done before releasing a new irccd version.

This guide uses 2.0.5 as example version.

Switch to the appropriate release branch

Use the major.minor release branch (2.0 in this case.)

$ hg update release-2.0

If the branch does not exist yet, create it in stable-2.

$ hg up stable-2
$ hg branch release-2.0
$ hg ci -m "release: create release-2.0 branch" 

You may need to incorporate default/stable branch code:

$ hg merge default # or stable-2

Change the version and date in the cmake/IrccdVersion.cmake file

Example:

set(IRCCD_VERSION_MAJOR "2")
set(IRCCD_VERSION_MINOR "0")
set(IRCCD_VERSION_PATCH "5")

set(IRCCD_RELEASE_DATE_YEAR 2016)
set(IRCCD_RELEASE_DATE_MONTH 12)
set(IRCCD_RELEASE_DATE_DAY 31)

Update or verify the CHANGES.md file

Adjust date and verify everything.

Update the README.md

Check that everything is still correct.

Create a new tag 2.0.5

Commit changes to previous files.

$ hg ci -m "release: update before 2.0.5" 

Create the tag and edit its message.

$ hg tag 2.0.5
$ hg ci --amend # release: added tag ...

Create the signature of the tag

Create the signature and edit its message.

$ hg sign
$ hg ci --amend # release: added signature ...

Push the changes and merge by top-porting it

Example:

$ hg update stable-2
$ hg merge release-2.0
$ hg ci -m "release: merge from release-2.0" 
$ hg up @
$ hg merge release-2.0
$ hg ci -m "release: merge from stable-2" 
$ hg push

Create the package

$ make package_source

Sign packages

Sign packages.

$ gpg --sign --armor irccd-*.tar.xz
$ gpg --sign --armor irccd-*.zip

Create checksums

Create checksums for both archives and signatures.

$ sha1 irccd-*.* > CHECKSUM.SHA-1.txt
$ sha256 irccd-*.* > CHECKSUM.SHA256.txt