@@ -518,3 +518,49 @@ case down to 5 lines.
518518Happy bug hunting and test case reducing!
519519
520520[ More information on using ` creduce ` .] ( https://embed.cs.utah.edu/creduce/using/ )
521+
522+ ## Cutting a new bindgen release
523+
524+ To cut a release, the following needs to happen:
525+
526+ ### Updating the changelog
527+
528+ Update the CHANGELOG.md file with the changes from the last release. Something
529+ like the following is a useful way to check what has landed:
530+
531+ ```
532+ $ git log --oneline v0.62.0..HEAD
533+ ```
534+
535+ Also worth checking the [ next-release tag] ( https://github.com/rust-lang/rust-bindgen/pulls?q=is%3Apr+label%3Anext-release ) .
536+
537+ Once that's done and the changelog is up-to-date, run ` doctoc ` on it.
538+
539+ If needed, install it locally by running:
540+
541+ ```
542+ $ npm install doctoc
543+ $ ./node_modules/doctoc/doctoc.js CHANGELOG.md
544+ ```
545+
546+ ### Bumping the version numbers.
547+
548+ Bump version numbers as needed. Run tests just to ensure everything is working
549+ as expected.
550+
551+ ### Merge to ` master `
552+
553+ For regular releases, the changes above should end up in ` master ` before
554+ publishing. For dot-releases of an old version (e.g., cherry-picking an
555+ important fix) you can skip this.
556+
557+ ### Publish and add a git tag for the right commit
558+
559+ Once you're in the right commit, do:
560+
561+ ```
562+ $ git tag -a v0.62.1 # With the right version of course
563+ $ pushd bindgen && cargo publish && popd
564+ $ pushd bindgen-cli && cargo publish && popd
565+ $ git push --tags upstream # To publish the tag
566+ ```
0 commit comments