From 8390b7ec001b17619ef50706d86224f9b37bc0b5 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Sat, 11 Jul 2020 14:22:03 -0700 Subject: [PATCH 1/4] Add release summary, some touch-ups --- HOW_TO_RELEASE.md | 78 +++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index c890d61d966..a42106f50b7 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -2,78 +2,90 @@ Time required: about an hour. +These instructions assume that `upstream` refers to the main repository: +``` +$ git remote -v +{...} +upstream https://github.com/pydata/xarray (fetch) +upstream https://github.com/pydata/xarray (push) +``` + + 0. Write a release summary: ~50 words describing the high level features. This + will be used in the release emails, tweets, GitHub release notes, etc. + I (@max) find it helpful to use a PR given I'm not always familiar with all the + features of the release, and the summary is distributed widely. + 1. Ensure your master branch is synced to upstream: - ``` - git pull upstream master - ``` + ```sh + git pull upstream master + ``` 2. Get a list of contributors with: - ``` + ```sh git log "$(git tag --sort="v:refname" | sed -n 'x;$p').." --format=%aN | sort -u | perl -pe 's/\n/$1, /' ``` - or by substituting the _previous_ release in: - ``` - git log v0.X.Y-1.. --format=%aN | sort -u | perl -pe 's/\n/$1, /' + or by substituting the _previous_ release in {0.X.Y-1}: + ```sh + git log v{0.X.Y-1}.. --format=%aN | sort -u | perl -pe 's/\n/$1, /' ``` Add these into `whats-new.rst` somewhere :) 3. Look over whats-new.rst and the docs. Make sure "What's New" is complete - (check the date!) and consider adding a brief summary note describing the - release at the top. + (check the date!) and add the release summary at the top. Things to watch out for: - Important new features should be highlighted towards the top. - Function/method references should include links to the API docs. - Sometimes notes get added in the wrong section of whats-new, typically due to a bad merge. Check for these before a release by using git diff, - e.g., `git diff v0.X.Y whats-new.rst` where 0.X.Y is the previous + e.g., `git diff v{0.X.Y-1} whats-new.rst` where {0.X.Y-1} is the previous release. 4. If you have any doubts, run the full test suite one final time! - ``` + ```sh pytest ``` 5. Check that the ReadTheDocs build is passing. 6. On the master branch, commit the release in git: - ``` - git commit -am 'Release v0.X.Y' + ```s + git commit -am 'Release v{0.X.Y}' ``` 7. Tag the release: + ```sh + git tag -a v{0.X.Y} -m 'v{0.X.Y}' ``` - git tag -a v0.X.Y -m 'v0.X.Y' - ``` - 8. Build source and binary wheels for pypi: - ``` - git clean -xdf # this deletes all uncommited changes! + 8. Build source and binary wheels for PyPI: + ```sh + git clean -xdf # this deletes all uncommitted changes! python setup.py bdist_wheel sdist ``` 9. Use twine to check the package build: + ```sh + twine check dist/xarray-{0.X.Y}* ``` - twine check dist/xarray-0.X.Y* - ``` -10. Use twine to register and upload the release on pypi. Be careful, you can't +10. Use twine to register and upload the release on PyPI. Be careful, you can't take this back! - ``` - twine upload dist/xarray-0.X.Y* + ```sh + twine upload dist/xarray-{0.X.Y}* ``` You will need to be listed as a package owner at https://pypi.python.org/pypi/xarray for this to work. 11. Push your changes to master: - ``` + ```sh git push upstream master git push upstream --tags ``` 12. Update the stable branch (used by ReadTheDocs) and switch back to master: - ``` + ```sh git checkout stable git rebase master - git push upstream stable + git push --force upstream stable git checkout master ``` It's OK to force push to 'stable' if necessary. (We also update the stable - branch with `git cherrypick` for documentation only fixes that apply the + branch with `git cherry-pick` for documentation only fixes that apply the current released version.) -13. Add a section for the next release (v.X.Y+1) to doc/whats-new.rst: +13. Add a section for the next release {0.X.Y+1} to doc/whats-new.rst: ``` - .. _whats-new.0.X.Y+1: + .. _whats-new.{0.X.Y+1}: - v0.X.Y+1 (unreleased) + v{0.X.Y+1} (unreleased) --------------------- Breaking changes @@ -96,14 +108,14 @@ Time required: about an hour. ~~~~~~~~~~~~~~~~ ``` 14. Commit your changes and push to master again: - ``` + ```sh git commit -am 'New whatsnew section' git push upstream master ``` You're done pushing to master! 15. Issue the release on GitHub. Click on "Draft a new release" at - https://github.com/pydata/xarray/releases. Type in the version number, but - don't bother to describe it -- we maintain that on the docs instead. + https://github.com/pydata/xarray/releases. Type in the version number + and paste the release summary in the notes. 16. Update the docs. Login to https://readthedocs.org/projects/xray/versions/ and switch your new release tag (at the bottom) from "Inactive" to "Active". It should now build automatically. From edb2ad6d1dcf5f87757d9e9147bc3a225053e90d Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Sat, 11 Jul 2020 14:33:36 -0700 Subject: [PATCH 2/4] Add Twitter --- HOW_TO_RELEASE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index a42106f50b7..497fbd77224 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -119,8 +119,8 @@ upstream https://github.com/pydata/xarray (push) 16. Update the docs. Login to https://readthedocs.org/projects/xray/versions/ and switch your new release tag (at the bottom) from "Inactive" to "Active". It should now build automatically. -17. Issue the release announcement! For bug fix releases, I usually only email - xarray@googlegroups.com. For major/feature releases, I will email a broader +17. Issue the release announcement to mailing lists & Twitter. For bug fix releases, I + usually only email xarray@googlegroups.com. For major/feature releases, I will email a broader list (no more than once every 3-6 months): - pydata@googlegroups.com - xarray@googlegroups.com From 59ce07dc62a6d7ade81c9ccfb1af19bacc0ae81b Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Sun, 12 Jul 2020 10:29:09 -0700 Subject: [PATCH 3/4] Touch up whatsnew entry --- doc/whats-new.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index d086d4f411d..181c2081e4e 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -113,8 +113,8 @@ New Features :py:func:`combine_by_coords` and :py:func:`combine_nested` using combine_attrs keyword argument. (:issue:`3865`, :pull:`3877`) By `John Omotani `_ -- 'missing_dims' argument to :py:meth:`Dataset.isel`, - `:py:meth:`DataArray.isel` and :py:meth:`Variable.isel` to allow replacing +- `missing_dims` argument to :py:meth:`Dataset.isel`, + :py:meth:`DataArray.isel` and :py:meth:`Variable.isel` to allow replacing the exception when a dimension passed to ``isel`` is not present with a warning, or just ignore the dimension. (:issue:`3866`, :pull:`3923`) By `John Omotani `_ @@ -128,7 +128,7 @@ New Features By `Stephan Hoyer `_. - Allow plotting of boolean arrays. (:pull:`3766`) By `Marek Jacob `_ -- Enable using MultiIndex levels as cordinates in 1D and 2D plots (:issue:`3927`). +- Enable using MultiIndex levels as coordinates in 1D and 2D plots (:issue:`3927`). By `Mathias Hauser `_. - A ``days_in_month`` accessor for :py:class:`xarray.CFTimeIndex`, analogous to the ``days_in_month`` accessor for a :py:class:`pandas.DatetimeIndex`, which From 1092c35f7776562a55754e0f6a47bc8b09d7ba18 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Sun, 12 Jul 2020 11:42:20 -0700 Subject: [PATCH 4/4] @keewis suggestions --- HOW_TO_RELEASE.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index 497fbd77224..24995a389c4 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -10,11 +10,6 @@ upstream https://github.com/pydata/xarray (fetch) upstream https://github.com/pydata/xarray (push) ``` - 0. Write a release summary: ~50 words describing the high level features. This - will be used in the release emails, tweets, GitHub release notes, etc. - I (@max) find it helpful to use a PR given I'm not always familiar with all the - features of the release, and the summary is distributed widely. - 1. Ensure your master branch is synced to upstream: ```sh git pull upstream master @@ -28,6 +23,8 @@ upstream https://github.com/pydata/xarray (push) git log v{0.X.Y-1}.. --format=%aN | sort -u | perl -pe 's/\n/$1, /' ``` Add these into `whats-new.rst` somewhere :) + 2. Write a release summary: ~50 words describing the high level features. This + will be used in the release emails, tweets, GitHub release notes, etc. 3. Look over whats-new.rst and the docs. Make sure "What's New" is complete (check the date!) and add the release summary at the top. Things to watch out for: @@ -37,6 +34,11 @@ upstream https://github.com/pydata/xarray (push) due to a bad merge. Check for these before a release by using git diff, e.g., `git diff v{0.X.Y-1} whats-new.rst` where {0.X.Y-1} is the previous release. + 4. If possible, open a PR with the release summary and whatsnew changes. + 4. After merging, again ensure your master branch is synced to upstream: + ```sh + git pull upstream master + ``` 4. If you have any doubts, run the full test suite one final time! ```sh pytest