RELEASING
=========

When making a new release;

 - Verify that you don't have uncommitted and unpublished
   changes, i.e. both this:

     $ git status

   and this:

     $ git diff --stat master origin/master

   should be empty. Commit and push before the next step.

 - Clean your work directory:

     $ git clean -xdf

   This ensures that you don't have stale files lying around.

 - Run:

     $ ./autogen.sh --enable-gtk-doc --enable-docs
     $ make all
     $ make check

   And verify that the code builds from a clean Git snapshot.

 - Update the release documentation:

     - NEWS: new feature details, bugs fixed, acknowledgements
     - README: dependencies, any behavioural changes relevant to
       developers;

   then commit the changes.

 - Bump clutter_micro_version to the next even number; if this is a stable
   release, bump up clutter_interface_version by one as well. Then commit
   the changes.

 - Run:

     $ make release-publish

   which will:

     - do sanity checks on the build
     - distcheck the release
     - tag the repository with the version number
     - upload the tarball to the remote server (needs SSH account)

 - Bump clutter_micro_version to the next odd number; if this is a stable
   release, bump up clutter_interface_version by one as well. Then commit
   the changes.

 - Push the branch and then the tag, e.g.:

     $ git push origin master
     $ git push origin 1.2.4

 - Announce release to the waiting world on the blog and mailing lists. Use
   the template printed by `make release-publish`.