1This document explains how to perform the project's maintenance tasks. 2 3### Repository Configuration 4 5Some repository settings, including branch protection and required approvals, are managed in the 6[Rust team repo](https://github.com/rust-lang/team/blob/master/repos/rust-lang/flate2-rs.toml). 7See the [repository schema](https://github.com/rust-lang/team/blob/aaa8039a2420a07cab9bbaca3885b3ad95a256a7/docs/toml-schema.md?plain=1#L248) 8for supported directives. 9 10### Creating a new release 11 12#### Artifacts 13 14* a tag of the version number 15* a new [crate version](https://crates.io/crates/flate2/versions) 16 17#### Process 18 19To generate all the artifacts above, one proceeds as follows: 20 211. `git checkout -b release-<next-version>` - create a branch to make changes to the repository. *Changes cannot be made to `main` as it is protected.* 222. Edit `Cargo.toml` to update the package version to `<next-version>`. 233. Create a new PR for the branch (e.g. using `gh pr create`) and **get it approved and merged**. 244. Pull the `main` branch and ensure that you are at the merged commit. 254. `cargo publish` to create a new release on `crates.io`. 265. `git tag <next-version>` to remember the commit. 276. `git push --tags` to push the new tag. 287. Go to the newly created release page on GitHub and edit it by pressing the "Generate Release Notes" and the `@` button. Save the release. 29