How to do a release¶
Update changelog and Cargo versions¶
Send a PR similar to https://github.com/jj-vcs/jj/pull/5215. Feel free to copy-edit the changelog in order to:
- Populate "Release highlights" if relevant
- Put more important items first so the reader doesn't miss them
- Make items consistent when it comes to language and formatting
Producing the list of contributors is a bit annoying. The current suggestion is to run something like this:
jj log --no-graph -r 'heads(tags())..main' -T 'author ++ "\n"' | sort | uniq -c
Then try to find the right GitHub username for each person and copy their name and username from the GitHub page for the person (e.g. https://github.com/martinvonz).
Get the PR through review and get it merged as usual.
Create a tag and a GitHub release¶
- Go to https://github.com/jj-vcs/jj/releases and click "Draft a new release"
- Click "Choose a tag" and enter "v0.\<number>.0" (e.g. "v0.26.0") to create a new tag
- Click "Target", then "Recent commits", and select the commit from your merged PR
- Use the name (e.g. "v0.26.0") as "Release title". Paste the changelog entries into the message body
- Check "Create a discussion for this release"
- Click "Publish release"
Publish the crates to crates.io¶
Go to a terminal and create a new clone of the repo 1:
cd $(mktemp -d)
jj git clone https://github.com/jj-vcs/jj
cd jj
jj new v0.<number>.0
Publish each crate:
(cd lib/proc-macros && cargo publish)
(cd lib && cargo publish)
(cd cli && cargo publish)