Skip to content

Commit 318816a

Browse files
authored
Refinements to how-to-release (#4964)
1 parent f74c446 commit 318816a

File tree

1 file changed

+31
-24
lines changed

1 file changed

+31
-24
lines changed

HOW_TO_RELEASE.md

+31-24
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ upstream https://github.com/pydata/xarray (push)
2121
2. Confirm there are no commits on stable that are not yet merged
2222
([ref](https://github.com/pydata/xarray/pull/4440)):
2323
```sh
24-
git merge upstream stable
24+
git merge upstream/stable
2525
```
26-
2. Add a list of contributors with:
26+
3. Add a list of contributors with:
2727
```sh
2828
git log "$(git tag --sort="v:refname" | sed -n 'x;$p').." --format=%aN | sort -u | perl -pe 's/\n/$1, /'
2929
```
@@ -35,9 +35,9 @@ upstream https://github.com/pydata/xarray (push)
3535
```sh
3636
git log v{0.X.Y-1}.. --format=%aN | sort -u | wc -l
3737
```
38-
3. Write a release summary: ~50 words describing the high level features. This
38+
4. Write a release summary: ~50 words describing the high level features. This
3939
will be used in the release emails, tweets, GitHub release notes, etc.
40-
4. Look over whats-new.rst and the docs. Make sure "What's New" is complete
40+
5. Look over whats-new.rst and the docs. Make sure "What's New" is complete
4141
(check the date!) and add the release summary at the top.
4242
Things to watch out for:
4343
- Important new features should be highlighted towards the top.
@@ -46,46 +46,48 @@ upstream https://github.com/pydata/xarray (push)
4646
due to a bad merge. Check for these before a release by using git diff,
4747
e.g., `git diff v{0.X.Y-1} whats-new.rst` where {0.X.Y-1} is the previous
4848
release.
49-
5. If possible, open a PR with the release summary and whatsnew changes.
50-
6. After merging, again ensure your master branch is synced to upstream:
49+
6. Open a PR with the release summary and whatsnew changes; in particular the
50+
release headline should get feedback from the team on what's important to include.
51+
7. After merging, again ensure your master branch is synced to upstream:
5152
```sh
5253
git pull upstream master
5354
```
54-
7. If you have any doubts, run the full test suite one final time!
55+
8. If you have any doubts, run the full test suite one final time!
5556
```sh
5657
pytest
5758
```
58-
8. Check that the ReadTheDocs build is passing.
59-
9. On the master branch, commit the release in git:
60-
```sh
61-
git commit -am 'Release v{0.X.Y}'
62-
```
59+
9. Check that the ReadTheDocs build is passing.
6360
10. Tag the release:
6461
```sh
6562
git tag -a v{0.X.Y} -m 'v{0.X.Y}'
6663
```
67-
11. Build source and binary wheels for PyPI:
64+
11. Ensure the dependencies for building are installed:
6865
```sh
69-
git clean -xdf # this deletes all uncommitted changes!
66+
pip install setuptools-scm twine wheel
67+
```
68+
12. Build source and binary wheels for PyPI:
69+
```sh
70+
git clean -xdf # This removes any untracked files!
71+
git restore -SW . # This removes any tracked changes!
7072
python setup.py bdist_wheel sdist
7173
```
72-
12. Use twine to check the package build:
74+
13. Use twine to check the package build:
7375
```sh
7476
twine check dist/xarray-{0.X.Y}*
7577
```
76-
13. Use twine to register and upload the release on PyPI. Be careful, you can't
78+
14. Use twine to register and upload the release on PyPI. Be careful, you can't
7779
take this back!
7880
```sh
7981
twine upload dist/xarray-{0.X.Y}*
8082
```
8183
You will need to be listed as a package owner at
8284
<https://pypi.python.org/pypi/xarray> for this to work.
83-
14. Push your changes to master:
85+
15. Push your changes to master:
8486
```sh
8587
git push upstream master
8688
git push upstream --tags
8789
```
88-
15. Update the stable branch (used by ReadTheDocs) and switch back to master:
90+
16. Update the stable branch (used by ReadTheDocs) and switch back to master:
8991
```sh
9092
git switch stable
9193
git rebase master
@@ -95,18 +97,22 @@ upstream https://github.com/pydata/xarray (push)
9597
It's OK to force push to `stable` if necessary. (We also update the stable
9698
branch with `git cherry-pick` for documentation only fixes that apply the
9799
current released version.)
98-
16. Add a section for the next release {0.X.Y+1} to doc/whats-new.rst:
100+
17. Add a section for the next release {0.X.Y+1} to doc/whats-new.rst:
99101
```rst
100102
.. _whats-new.{0.X.Y+1}:
101103
102104
v{0.X.Y+1} (unreleased)
103105
---------------------
104106
107+
New Features
108+
~~~~~~~~~~~~
109+
110+
105111
Breaking changes
106112
~~~~~~~~~~~~~~~~
107113
108114
109-
New Features
115+
Deprecations
110116
~~~~~~~~~~~~
111117
112118
@@ -120,20 +126,21 @@ upstream https://github.com/pydata/xarray (push)
120126
121127
Internal Changes
122128
~~~~~~~~~~~~~~~~
129+
123130
```
124-
17. Commit your changes and push to master again:
131+
18. Commit your changes and push to master again:
125132
```sh
126133
git commit -am 'New whatsnew section'
127134
git push upstream master
128135
```
129136
You're done pushing to master!
130-
18. Issue the release on GitHub. Click on "Draft a new release" at
137+
19. Issue the release on GitHub. Click on "Draft a new release" at
131138
<https://github.com/pydata/xarray/releases>. Type in the version number
132139
and paste the release summary in the notes.
133-
19. Update the docs. Login to <https://readthedocs.org/projects/xray/versions/>
140+
20. Update the docs. Login to <https://readthedocs.org/projects/xray/versions/>
134141
and switch your new release tag (at the bottom) from "Inactive" to "Active".
135142
It should now build automatically.
136-
20. Issue the release announcement to mailing lists & Twitter. For bug fix releases, I
143+
21. Issue the release announcement to mailing lists & Twitter. For bug fix releases, I
137144
usually only email [email protected]. For major/feature releases, I will email a broader
138145
list (no more than once every 3-6 months):
139146

0 commit comments

Comments
 (0)