Short checklist and instructions how to make release
====================================================

When you're ready to make release X.Y.Z you need to do
following steps.

Prepare code
------------
1. Update ./NEWS.txt with descriptions of user-visible changes.
2. Update version numbers in following places:

   * ./__init__.py: at the beginning of file::
   
   	version_info = (X, Y, Z, 'final', 0)
   
   * ./setup.py: function setup() at the end of file, argument version::
   
   	version='X.Y.Z',

   * ./installer/qbzr-setup.iss: at the beginning of file::
   
   	AppVerName=QBzr X.Y.Z
   	OutputBaseFilename=qbzr-setup-X.Y.Z
   
3. Commit this changes and tag the revision with label: release-X.Y.Z
4. Push the code to Launchpad


Prepare translations (optionally)
---------------------------------
* It makes sense to download fresh translations from Launchpad just before
  major releases, or on regular basis. 
* To do so, go to translation page
  https://translations.launchpad.net/qbzr
* Select series for which you want to get translations, usually it's ok
  to go straight to trunk series:
  https://translations.launchpad.net/qbzr/trunk/+translations
* And in Manual Synchronization section select "download"
  https://translations.launchpad.net/qbzr/trunk/+export
  You need PO format of files.
* After some time you'll get an e-mail with download link.

* Download that tarball and place it to the root of your qbzr development tree,
  then execute command::

      python setup.py import_po

* Inspect changes, run::

      make mo

  to ensure that everything is OK.

* If there are new translation files for new languages appear (not under
  version control) - ensure you're `bzr add` them before commit 
  (NOTE in NEWS.txt about new translations are very welcome).
* Commit updated translations and push to Launchpad.
* You'd better update transaltions before starting release process.


Register release at Launchpad
-----------------------------
1. Make corresponding page for new release on Launchpad:

	https://launchpad.net/qbzr/trunk/+addrelease
        
2. Put info about release from ./NEWS.txt to "Release notes" section.
   You can leave Changelog section empty.


Build distribution files
------------------------
Building + signing distribution files now possible to do in semi-automated way
using make utility.

Run command::

    make release RELEASE=X.Y.Z

This command will create sources tarball (qbzr-X.Y.Z.tar.gz) and windows 
universal installer (qbzr-setup-X.Y.Z.exe) and will sign both with GPG.

Upload tarball and installer with their gpg-signatures to Launchpad:

	https://launchpad.net/qbzr/trunk/X.Y.Z/+adddownloadfile

Building distribution files under the hood
******************************************

1. Make source code tarball::

	bzr export --root=qbzr qbzr-X.Y.Z.tar.gz
        
   The file qbzr-X.Y.Z.tar.gz will be created in tree root directory.
   Sign this file with your GPG key::
   
   	gpg -ab qbzr-X.Y.Z.tar.gz

2. Build binary translations files::

	python setup.py build_mo -f

3. Make Windows universal installer:

    a. Run Inno Setup script compiler::
    
        iscc installer/qbzr-setup.iss
        
    This command will produce qbzr-setup-X.Y.Z.exe file in tree root directory.
    
    b. Sign this file with your GPG key::
   
        gpg -ab qbzr-setup-X.Y.Z.exe


Make announcement
-----------------
1. Send short e-mail with announcement to:
    * <bazaar-announce@lists.canonical.com>
    * <bazaar@lists.canonical.com> (optionally for beta releases,
      mandatory for final releases)
    * <qbzr@googlegroups.com>

2. Also make announcement about release via Launchpad RSS:

	https://launchpad.net/qbzr/+announce


Finishing stuff at Launchpad
----------------------------
* Mark all bugs targeted to X.Y.Z milestone as Fix Released.


Create deb packages with Launchpad PPA
--------------------------------------
???
