just playing with tangled
at ig/vimdiffwarn 72 lines 2.3 kB view raw view rendered
1# How to do a release 2 3## Update changelog and Cargo versions 4 5Send a PR similar to https://github.com/jj-vcs/jj/pull/5215. Feel free to 6copy-edit the changelog in order to: 7 8* Populate "Release highlights" if relevant 9* Put more important items first so the reader doesn't miss them 10* Make items consistent when it comes to language and formatting 11 12Producing the list of contributors is a bit annoying. The current suggestion is 13to run something like this: 14 15```shell 16root=v0.25.0 17for i in $(seq 5); do 18 gh api "/repos/jj-vcs/jj/compare/$root...main?per_page=100;page=$i" 19done | jq -r '.commits[] | "* " + .commit.author.name + " (@" + .author.login + ")"' | sort -fu 20``` 21 22https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#compare-two-commits 23 24Alternatively, the list can be produced locally: 25 26```shell 27jj log --no-graph -r 'heads(tags())..main' -T '"* " ++ author ++ "\n"' | sort -fu 28``` 29 30Then try to find the right GitHub username for each person and copy their name 31and username from the GitHub page for the person 32(e.g. https://github.com/martinvonz). 33 34Get the PR through review and get it merged as usual. 35 36## Create a tag and a GitHub release 37 381. Go to https://github.com/jj-vcs/jj/releases and click "Draft a new release" 392. Click "Choose a tag" and enter "v0.\<number\>.0" (e.g. "v0.26.0") to create a 40 new tag 413. Click "Target", then "Recent commits", and select the commit from your merged 42 PR 434. Use the name (e.g. "v0.26.0") as "Release title". Paste the changelog entries 44 into the message body 455. Check "Create a discussion for this release" 466. Click "Publish release" 47 48## Publish the crates to crates.io 49 50Go to a terminal and create a new clone of the repo [^1]: 51 52```shell 53cd $(mktemp -d) 54jj git clone https://github.com/jj-vcs/jj 55cd jj 56jj new v0.<number>.0 57``` 58 59Publish each crate: 60 61```shell 62(cd lib/proc-macros && cargo publish) 63(cd lib && cargo publish) 64(cd cli && cargo publish) 65``` 66 67 68[^1]: We recommend publishing from a new clone because `cargo publish` will 69 archive ignored files if they match the patterns in `[include]` 70 ([example](https://github.com/jj-vcs/jj/blob/b95628c398c6c3d11f41bdf53d0aef11f92ee96d/lib/Cargo.toml#L15-L22)), 71 so it's a security risk to run it an existing clone where you may have 72 left sensitive content in an ignored file.