0. Run full test suite in all branches and in master. Continue if all
   tests passed.

1. If release branch is not master - run devscripts/prerelease $NEW_TAG; if
   it's master - run devscripts/prerelease $NEW_TAG master.

   The script checks out the release branch and calls editor; if it's the
   first stable release of the branch - edit build-all-docs, advance stable
   branch; if it is a stable release - edit docs/News.rst to set release
   date; update version, the list of contributors, the list of changes and
   download URL in ANNOUNCE.rst; edit __version__.py and README.rst in the
   release branch - fix versions. Edit section [egg_info] in setup.cfg -
   set if it is a stable or development release. In setup.py edit
   "Development Status" in trove classifiers; edit download URLs: if a
   non-stable version - append 'dev' and date stamp, for a stable version
   remove 'dev' and date stamp). Commit. Verify.

2. If it's not master - null-merge to the next higher branch.

3. If release branch is not master - run devscripts/prerelease-tag
   $NEW_TAG; if it's master - run devscripts/prerelease-tag $NEW_TAG
   master. This checks out the release branch and creates the new tag at
   the head of the release branch.

4. Run devscripts/release. This generates and uploads new archives to PyPI
   and if it is a stable release - uploads archives and release
   announcement (ANNOUNCE.rst) to SourceForge. Move old releases at
   SourceForge to subdirectory OldFiles.

5. Run devscripts/postrelease. The script restores ANNOUNCE.rst and
   setup.cfg from the previous commit (HEAD~). It calls editor; update next
   version, remove the list of contributors and the list of changes, edit
   download URL in ANNOUNCE.rst. Edit README.rst and docs/News.rst - add
   new version.

6. Run devscripts/push-all in the development repository to push all
   branches and tags to the public repositories.

7. Generate new docs using devscripts/build-all-docs. Upload docs using
   devscripts/publish-docs.

8. Send announcement to the SQLObject mailing list. For a stable
   release send announcements to python, python-announce and python-db
   mailing lists.

9. Announce new release(s) at Twitter (https://twitter.com/SQLObject) and
   Wikipedia (https://en.wikipedia.org/wiki/SQLObject). If it is a stable
   release - announce it at
   https://en.wikipedia.org/wiki/Comparison_of_object-relational_mapping_software.
