docs/releasing.md
Send a PR similar to https://github.com/jj-vcs/jj/pull/7954. Feel free to copy-edit the changelog in order to:
To get the CHANGELOG diff, you can run
jj log -r 'heads(tags())' # Check that this shows the previous version
jj diff --from 'heads(tags())' --to main CHANGELOG.md
Make sure to add a corresponding reference link at the bottom of the
CHANGELOG for the new version's tag. It should be the github url comparing
the previous version tag with the new version tag
(e.g. https://github.com/jj-vcs/jj/compare/v0.32.0...v0.33.0).
Producing the list of contributors is a bit annoying. The current suggestion is to run something like this:
root=$(jj log --no-graph -r 'heads(tags(glob:"v*.*.*") & ::trunk())' -T commit_id)
filter='
map(.commits[] | select(.author.login | (. != null and endswith("[bot]") | not)))
| unique_by(if .author.login != null then .author.login else .author.email end)
| map(if .author.login != null
then "* \(.commit.author.name) (@\(.author.login))"
else "* \(.commit.author.name)"
end)
| .[]
'
gh api "/repos/jj-vcs/jj/compare/$root...main" --paginate | jq -sr "$filter" | sort -f
https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#compare-two-commits
Alternatively, the list can be produced locally:
jj log --no-graph -r 'heads(tags())..main' -T '"* " ++ author ++ "\n"' | sort -fu
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.
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)