Switch to CalVer and set a release cadence

This commit is contained in:
Donald Stufft 2018-04-22 13:50:00 -04:00
parent 3c0d97a0b7
commit dec22c92c2
6 changed files with 41 additions and 8 deletions

View File

@ -131,6 +131,30 @@ bugfixes, or other kinds of news that pulling in this library may have. This
uses the library name as the key so that updating the same library twice doesn't
produce two news file entries.
Changes to the processes, policies, or other non code related changed that are
otherwise notable can be done using a ``news/<name>.process`` file. This is not
typically used, but can be used for things like changing version schemes,
updating deprecation policy, etc.
Release Cadence
===============
The pip project has a release cadence of releasing whatever is on `master`
every 3 months. This gives users a predictable pattern for when releases
are going to happen and prevents locking up improvements for fixes for long
periods of time, while still preventing massively fracturing the user base
with version numbers.
Our release months are January, April, July, October. The release date within
that month will be up to the release manager for that release. If there are
no changes, then that release month is skipped and the next release will be
3 month later.
The release manager may, at their discretion, choose whether or not there
will be a pre-release period for a release, and if there is may extend that
period into the next month if needed.
Release Process
===============
@ -139,7 +163,9 @@ Release Process
running ``invoke generate.authors`` and commit the results.
#. On the current pip ``master`` branch, make a new commit which bumps the
version in ``pip/__init__.py`` to the release version and adjust the
``CHANGES.txt`` file to reflect the current date.
``CHANGES.txt`` file to reflect the current date. The release version should
follow a YY.N scheme, where YY is the two digit year, and N is the Nth release
within that year.
#. On the current pip ``master`` branch, generate a new ``NEWS.rst`` by running
``invoke generate.news`` and commit the results.
#. Create a signed tag of the ``master`` branch of the form ``X.Y.Z`` using the
@ -162,14 +188,14 @@ Sometimes we need to release a bugfix release of the form ``X.Y.Z+1``. In order
to create one of these the changes should already be merged into the
``master`` branch.
#. Create a new ``release/X.Y.Z+1`` branch off of the ``X.Y.Z`` tag using the
command ``git checkout -b release/X.Y.Z+1 X.Y.Z``.
#. Create a new ``release/YY.N.Z+1`` branch off of the ``YY.N`` tag using the
command ``git checkout -b release/YY.N.Z+1 YY.N``.
#. Cherry pick the fixed commits off of the ``master`` branch, fixing any
conflicts and moving any changelog entries from the development version's
changelog section to the ``X.Y.Z+1`` section.
#. Push the ``release/X.Y.Z+1`` branch to github and submit a PR for it against
changelog section to the ``YY.N.Z+1`` section.
#. Push the ``release/YY.N.Z+1`` branch to github and submit a PR for it against
the ``master`` branch and wait for the tests to run.
#. Once tests run, merge the ``release/X.Y.Z+1`` branch into master, and follow
#. Once tests run, merge the ``release/YY.N.Z+1`` branch into master, and follow
the above release process starting with step 4.

View File

@ -13,7 +13,7 @@
{% if definitions[category]['showcontent'] %}
{% for text, values in sections[section][category]|dictsort(by='value') %}
- {{ text }}{% if category != 'vendor' %} ({{ values|sort|join(', ') }}){% endif %}
- {{ text }}{% if category != 'vendor' and category != 'process' %} ({{ values|sort|join(', ') }}){% endif %}
{% endfor %}
{% else %}

1
news/calver.process Normal file
View File

@ -0,0 +1 @@
Switch to a Calendar based versioning scheme.

View File

@ -0,0 +1 @@
Switch to releasing a new, non bug fix version of pip every 3 months.

View File

@ -9,6 +9,11 @@ directory = "news/"
title_format = "{version} ({project_date})"
template = "news/_template.rst"
[[tool.towncrier.type]]
directory = "process"
name = "Process"
showcontent = true
[[tool.towncrier.type]]
directory = "removal"
name = "Deprecations and Removals"

View File

@ -1 +1 @@
__version__ = "10.0.1"
__version__ = "18.0.dev0"