=========================== How to make a khmer release =========================== 1. (Optional) Check for updates to ez_setup.py and versioneer.py (see below) 2. Review the git logs and diffs (if needed) and ensure that the Changelog is up to date. 3. Verify that the build is clean: http://ci.ged.msu.edu/job/khmer-multi/ 4. Tag the branch with the new version number prefixed by the letter 'v': `git tag v0.7` 5. (Optional) Publish the new release on the testing PyPI server. `python setup.py register --repository https://testpypi.python.org/pypi` Change your PyPI credentials as documented in https://wiki.python.org/moin/TestPyPI `python setup.py sdist upload -r https://testpypi.python.org/pypi` Test the release in a new virtualenv `pip install -i https://testpypi.python.org/pypi khmer` 6. Publish the new release on PyPI (requires an authorized account) `python setup.py register sdist upload` 7. Push the tags to github `git push; git push --tags` 8. Tweet about the new release. Optionally send email to khmer@lists.idyll.org Upstream sources ---------------- ez_setup.py is from https://bitbucket.org/pypa/setuptools/raw/bootstrap/ versioneer.py is from https://raw.github.com/warner/python-versioneer/master/versioneer.py Before major releases they should be examined to see if there are new versions available and if the change would be useful Explanation ----------- Versioneer, from https://github.com/warner/python-versioneer, is used to determine the version number and is called by Setuptools and Sphinx. See the files versioneer.py, the top of khmer/__init__.py, khmer/_version.py, setup.py, and doc/conf.py for the implementation. The version number is determined through several methods: see https://github.com/warner/python-versioneer#version-identifiers If the source tree is from a git checkout then the version number is derived by `git describe --tags --dirty --always`. This will be in the format ${tagVersion}-${commits_ahead}-${revision_id}-${isDirty}. Example: v0.6.1-18-g8a9e430-dirty If from an unpacked tarball then the name of the directory is queried. Lacking either of the two git-archive will record the version number at the top of khmer/_version.py via the `$Format:%d$` and `$Format:%H$` placeholders enabled by the "export-subst" entry in .gitattributes Non source distributions will have a customized khmer/_version.py that contains hard-coded version strings. (see build/*/khmer/_version.py after a `python setup.py build` for an example) ez_setup.py bootstraps setuptools (if needed) by downloading and installing an appropriate version