- Ensure local
master
is up to date with respect toorigin/master
. - Run
cargo update
and review dependency updates. Commit updatedCargo.lock
. - Run
cargo outdated
and review semver incompatible updates. Unless there is a strong motivation otherwise, review and update every dependency. Also run--aggressive
, but don't update to crates that are still in beta. - Update date in
crates/core/flags/doc/template.rg.1
. - Review changes for every crate in
crates
since the last ripgrep release. If the set of changes is non-empty, issue a new release for that crate. Check crates in the following order. After updating a crate, ensure minimal versions are updated as appropriate in dependents. If an update is required, runcargo-up --no-push crates/{CRATE}/Cargo.toml
.- crates/globset
- crates/ignore
- crates/cli
- crates/matcher
- crates/regex
- crates/pcre2
- crates/searcher
- crates/printer
- crates/grep (bump minimal versions as necessary)
- crates/core (do not bump version, but update dependencies as needed)
- Update the CHANGELOG as appropriate.
- Edit the
Cargo.toml
to set the new ripgrep version. Runcargo update -p ripgrep
so that theCargo.lock
is updated. Commit the changes and create a new signed tag. Alternatively, usecargo-up --no-push --no-release Cargo.toml {VERSION}
to automate this. - Run
cargo package
and ensure it succeeds. - Push changes to GitHub, NOT including the tag. (But do not publish a new version of ripgrep to crates.io yet.)
- Once CI for
master
finishes successfully, push the version tag. (Trying to do this in one step seems to result in GitHub Actions not seeing the tag push and thus not running the release workflow.) - Wait for CI to finish creating the release. If the release build fails, then delete the tag from GitHub, make fixes, re-tag, delete the release and push.
- Copy the relevant section of the CHANGELOG to the tagged release notes.
Include this blurb describing what ripgrep is:
In case you haven't heard of it before, ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files.
- Run
git checkout {VERSION} && ci/build-and-publish-m2 {VERSION}
on a macOS system with Apple silicon. - Run
cargo publish
. - Run
ci/sha256-releases {VERSION} >> pkg/brew/ripgrep-bin.rb
. Then editpkg/brew/ripgrep-bin.rb
to update the version number and sha256 hashes. Remove extraneous stuff added byci/sha256-releases
. Commit changes. - Add TBD section to the top of the CHANGELOG:
TBD === Unreleased changes. Release notes have not yet been written.