Skip to content

Commit 0019261

Browse files
authored
Update stable branch after publishing to PyPI (#3223)
We've decided to a) convert stable back into a branch and b) to update it immediately as part of the release process. We may as well automate it. And about going back to a branch ... Git tags are not the right tool, at all[^1]. They come with the expectation that they will never change. Things will not work as expected if they do change, doubly so if they change regularly. Once you pull stable from the remote and it's copied in your local repository, no matter how many times you run git pull you'll never see it get updated automatically. Your only recourse is to delete the tag via `git tag -d stable` before pulling. This gets annoying really quickly since stable is supposed to be the solution for folks "who want to move along as Black developers deem the newest version reliable."[^2] See this comment for how this impacts users using our Vim plugin[^3]. It also affects us developers[^4]. If you have stable locally, once we cut a new release and update the stable tag, a simple `git pull` / `git fetch` will not pull down the updated stable tag. Unless you remember to delete stable before pulling, stable will become stale and useless. You can argue this is a good thing ("people should explicitly opt into updating stable"), but IMO it does not match user expectations nor developer expectations[^5]. Especially since not all our integrations that use stable are bound by this security measure, for example our GitHub Action (since it does a clean fetch of the repository every time it's used). I believe consistency would be good here. Finally, ever since we switched to a tag, we've been facing issues with ReadTheDocs not picking up updates to stable unless we force a rebuild. The initial rebuild on the stable update just pulls the commit the tag previously pointed to. I'm not sure if switching back to a branch will fix this, but I'd wager it will. [^1]: https://git-scm.com/docs/git-tag#_on_re_tagging [^2]: https://black.readthedocs.io/en/stable/contributing/release_process.html#moving-the-stable-tag [^3]: #2503 (comment) [^4]: In fairness, most folks working on Black probably don't use the `stable` ref anyway, especially us maintainers who'd know what is the latest version by heart, but it'd still be nice to make it usable for local dev though. [^5]: Also what benefit does a `stable` ref have over explicit version tags like `22.6.0`? If you're going to opt into some odd pin mechanism, might as well use explicit version tags for clarity and consistency.
1 parent 7757078 commit 0019261

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

.github/workflows/pypi_upload.yml

+19
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,22 @@ jobs:
7474
env:
7575
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
7676
run: pipx run twine upload --verbose -u '__token__' wheelhouse/*.whl
77+
78+
update-stable-branch:
79+
name: Update stable branch
80+
needs: [main, mypyc]
81+
runs-on: ubuntu-latest
82+
permissions:
83+
contents: write
84+
85+
steps:
86+
- name: Checkout stable branch
87+
uses: actions/checkout@v3
88+
with:
89+
ref: stable
90+
fetch-depth: 0
91+
92+
- name: Update stable branch to release tag & push
93+
run: |
94+
git reset --hard ${{ github.event.release.tag_name }}
95+
git push

0 commit comments

Comments
 (0)