# Releasing a new Lucivy Version

## Steps

1. Identify new packages in workspace since last release
2. Identify changed packages in workspace since last release
3. Bump version in `Cargo.toml` and their dependents for all changed packages
4. Update version of root `Cargo.toml`
5. Publish version starting with leaf nodes
6. Set git tag with new version


[`cargo-release`](https://github.com/crate-ci/cargo-release) will help us with steps 1-5:

Replace prev-tag-name
```bash
cargo release --workspace --no-publish -v --prev-tag-name 0.24 --push-remote origin minor --no-tag
```

`no-tag` or it will create tags for all the subpackages

cargo release will _not_ ignore unchanged packages, but it will print warnings for them.
e.g. "warning: updating ownedbytes to 0.10.0 despite no changes made since tag 0.24"

We need to manually ignore these unchanged packages
```bash
cargo release --workspace --no-publish -v --prev-tag-name 0.24 --push-remote origin minor --no-tag --exclude tokenizer-api
```

Add `--execute` to actually publish the packages, otherwise it will only print the commands that would be run.

### Tag Version
```bash
git tag 0.25.0
git push upstream tag 0.25.0
```


