How to make a new release of ``skimage``
========================================

- Check ``TODO.txt`` for any outstanding tasks.

- Update release notes.

  - To show a list of contributors and changes, run
    ``doc/release/contribs.py <tag of prev release>``.

- Update the version number in ``setup.py`` and ``bento.info`` and commit

- Update the docs:

  - Edit ``doc/source/_static/docversions.js`` and commit
  - Build a clean version of the docs.  Run ``python setup.py install`` in the
    root dir, then ``rm -rf build; make html`` in the docs.
  - Run ``make html`` again to copy the newly generated ``random.js`` into
    place.  Double check ``random.js``, otherwise the skimage.org front
    page gets broken!
  - Build using ``make gh-pages``.
  - Push upstream: ``git push origin gh-pages`` in ``doc/gh-pages``.

- Add the version number as a tag in git::

   git tag v0.X.0

- Push the new meta-data to github::

   git push --tags origin master

- Publish on PyPi::

   python setup.py register
   python setup.py sdist upload

- Increase the version number

  - In ``setup.py``, set to ``0.Xdev``.
  - In ``bento.info``, set to ``0.X.dev0``.

- Update the web frontpage:
  The webpage is kept in a separate repo: scikit-image-web

  - Sync your branch with the remote repo: ``git pull``.
    If you try to ``make gh-pages`` when your branch is out of sync, it
    creates headaches.
  - Update stable and development version numbers in
    ``_templates/sidebar_versions.html``.
  - Add release date to ``index.rst`` under "Announcements".
  - Add previous stable version documentation path to disallowed paths
    in `robots.txt`
  - Build using ``make gh-pages``.
  - Push upstream: ``git push origin master`` in ``gh-pages``.

- Update the development docs for the new version ``0.Xdev`` just like above

- Post release notes on mailing lists, blog, G+, etc.

  - scikit-image@googlegroups.com
  - scipy-user@scipy.org
  - scikit-learn-general@lists.sourceforge.net
  - pythonvision@googlegroups.com


Debian
------

- Tag the release as per instructions above.
- git checkout debian
- git merge v0.x.x
- uscan <- not sure if this step is necessary
- Update changelog (emacs has a good mode, requires package dpkg-dev-el)
  - C-C C-v add new version, C-c C-c timestamp / save
- git commit -m 'Changelog entry for 0.x.x'
- git-buildpackage -uc -us -rfakeroot
- Sign the changes: debsign skimage_0.x.x-x_amd64.changes
- cd ../build-area && dput mentors skimage_0.x.x-x_amd64.changes
- The package should now be available at:

  http://mentors.debian.net/package/skimage

For the last lines above to work, you need ``~/.gbp.conf``::

  [DEFAULT]
  upstream-tag = %(version)s

  [git-buildpackage]
  sign-tags = True
  export-dir = ../build-area/
  tarball-dir = ../tarballs/

As well as ``~/dput.cf``::

  [mentors]
  fqdn = mentors.debian.net
  incoming = /upload
  method = http
  allow_unsigned_uploads = 0
  progress_indicator = 2
  # Allow uploads for UNRELEASED packages
  allowed_distributions = .*
