From 60de36c090f4b8e2112c28cf8dba2ce70b4095a4 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Wed, 20 Nov 2019 15:13:21 -0500 Subject: [PATCH 1/6] tweaks to release instructions --- HOW_TO_RELEASE => HOW_TO_RELEASE.md | 48 ++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 11 deletions(-) rename HOW_TO_RELEASE => HOW_TO_RELEASE.md (74%) diff --git a/HOW_TO_RELEASE b/HOW_TO_RELEASE.md similarity index 74% rename from HOW_TO_RELEASE rename to HOW_TO_RELEASE.md index 5bf9bf38ded..62d26f7e55a 100644 --- a/HOW_TO_RELEASE +++ b/HOW_TO_RELEASE.md @@ -1,9 +1,11 @@ -How to issue an xarray release in 15 easy steps +How to issue an xarray release in 14 easy steps Time required: about an hour. 1. Ensure your master branch is synced to upstream: - git pull upstream master + ``` + git pull upstream master + ``` 2. 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. @@ -12,37 +14,53 @@ Time required: about an hour. - 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 v0.X.Y whats-new.rst` where 0.X.Y is the previous release. 3. If you have any doubts, run the full test suite one final time! - py.test + ``` + pytest + ``` 4. On the master branch, commit the release in git: + ``` git commit -a -m 'Release v0.X.Y' + ``` 5. Tag the release: + ``` git tag -a v0.X.Y -m 'v0.X.Y' + ``` 6. Build source and binary wheels for pypi: + ``` git clean -xdf # this deletes all uncommited changes! python setup.py bdist_wheel sdist + ``` 7. 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* + ``` You will need to be listed as a package owner at https://pypi.python.org/pypi/xarray for this to work. 8. Push your changes to master: + ``` git push upstream master git push upstream --tags + ``` 9. Update the stable branch (used by ReadTheDocs) and switch back to master: + ``` git checkout stable git rebase master git push 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 current released version. + ``` + 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 + current released version.) 10. Add a section for the next release (v.X.(Y+1)) to doc/whats-new.rst. 11. Commit your changes and push to master again: - git commit -a -m 'Revert to dev version' + ``` + git commit -a -m 'New whatsnew section' git push upstream master + ``` You're done pushing to master! 12. Issue the release on GitHub. Click on "Draft a new release" at https://github.com/pydata/xarray/releases. Type in the version number, but @@ -53,11 +71,19 @@ Time required: about an hour. 14. Issue the release announcement! 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, - numpy-discussion@scipy.org, scipy-user@scipy.org, - pyaos@lists.johnny-lin.com + - pydata@googlegroups.com + - xarray@googlegroups.com + - numpy-discussion@scipy.org + - scipy-user@scipy.org + - pyaos@lists.johnny-lin.com + Google search will turn up examples of prior release announcements (look for "ANN xarray"). + You can get a list of contributors with script (NB: this has limited testing), + replacing `v0.X.Y` with the _previous_ release + ``` + git log v0.X.Y.. --format="%aN" --reverse | perl -e 'my %dedupe; while () { print unless $dedupe{$_}++}' | sort + ``` Note on version numbering: From bf96e3640578050793479aa42f12d93ed3d066b5 Mon Sep 17 00:00:00 2001 From: Maximilian Roos <5635139+max-sixty@users.noreply.github.com> Date: Wed, 20 Nov 2019 15:22:37 -0500 Subject: [PATCH 2/6] Update HOW_TO_RELEASE.md Co-Authored-By: keewis --- HOW_TO_RELEASE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index 62d26f7e55a..ab9f1a43b01 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -82,7 +82,7 @@ Time required: about an hour. You can get a list of contributors with script (NB: this has limited testing), replacing `v0.X.Y` with the _previous_ release ``` - git log v0.X.Y.. --format="%aN" --reverse | perl -e 'my %dedupe; while () { print unless $dedupe{$_}++}' | sort + git log v0.X.Y.. --format="%aN" --reverse | sort -u ``` Note on version numbering: From c432650e46c8ce0e486ec519b28fd660368c25e8 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Wed, 20 Nov 2019 15:24:27 -0500 Subject: [PATCH 3/6] no need for --reverse either --- HOW_TO_RELEASE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index ab9f1a43b01..2084a4fe565 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -82,7 +82,7 @@ Time required: about an hour. You can get a list of contributors with script (NB: this has limited testing), replacing `v0.X.Y` with the _previous_ release ``` - git log v0.X.Y.. --format="%aN" --reverse | sort -u + git log v0.X.Y.. --format="%aN" | sort -u ``` Note on version numbering: From a614fb4fedf4f7fdf1350755ad811a314aa17036 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Wed, 20 Nov 2019 16:00:06 -0500 Subject: [PATCH 4/6] add cool script as option from @keewis --- HOW_TO_RELEASE.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index 2084a4fe565..cb9494bc716 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -79,8 +79,11 @@ Time required: about an hour. Google search will turn up examples of prior release announcements (look for "ANN xarray"). - You can get a list of contributors with script (NB: this has limited testing), - replacing `v0.X.Y` with the _previous_ release + You can get a list of contributors with: + ``` + git log "$(git tag | sort -V | sed -n 'x;$p').." --format="%aN" | sort -u + ``` + or by replacing `v0.X.Y` with the _previous_ release in: ``` git log v0.X.Y.. --format="%aN" | sort -u ``` From 72015e3383bc8ac0c3c90d29f8c141dd9ea2c478 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Wed, 20 Nov 2019 16:05:54 -0500 Subject: [PATCH 5/6] whatsnew reference --- doc/whats-new.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index de834512e36..91eed098522 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -13,7 +13,7 @@ What's New import xarray as xr np.random.seed(123456) -.. _whats-new.0.14.1: +.. _whats-new.0.15.0: v0.15.0 (unreleased) From c4538b320b7b1f0002c1d4b6a6d4410790ec6ac4 Mon Sep 17 00:00:00 2001 From: Maximilian Roos Date: Wed, 20 Nov 2019 16:28:18 -0500 Subject: [PATCH 6/6] tweak --- HOW_TO_RELEASE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HOW_TO_RELEASE.md b/HOW_TO_RELEASE.md index cb9494bc716..cdeb0e19a3e 100644 --- a/HOW_TO_RELEASE.md +++ b/HOW_TO_RELEASE.md @@ -81,7 +81,7 @@ Time required: about an hour. "ANN xarray"). You can get a list of contributors with: ``` - git log "$(git tag | sort -V | sed -n 'x;$p').." --format="%aN" | sort -u + git log "$(git tag --sort="v:refname" | sed -n 'x;$p').." --format="%aN" | sort -u ``` or by replacing `v0.X.Y` with the _previous_ release in: ```