# Contributing to Ixa
## Commit messages
This project uses
[Conventional Commits](https://release-plz.dev/docs/changelog/format#how-should-i-write-my-commits)
in order to auto-generate change log entries and detect version changes.
Keep the following in mind when merging PRs to `main`:
### Squash commits
Generally, you should use the squash button if you only need to land a single
commit (if more than one commit is landing, make sure you format them in git
before rebasing/merging). Don't land commits like "review fix" on `main`.
### Make commits readable
Your message is going to show up the next version release changelog, so make it
somewhat reasonable.
### Include a conventional commit prefix
- `fix:`: represents bug fixes, and results in a SemVer `patch` bump (e.g.,
v0.1.0 -> v0.1.1).
- `feat:`: represents a new feature, and results in a SemVer `minor` bump (e.g.,
v0.1.3 -> v0.2.0)
- `<prefix>!`: (e.g. `feat!:`): represents a breaking change (indicated by the
!) and results in a SemVer major bump (e.g., v0.1.0 -> v1.0.0)
### Include fix message to auto-close related issues
In the body section of the commit, add `fix #xxx` where xxx is the number of a
commit to auto-close it.
See
[GitHub documentation on linking a pull request to an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)
## Releasing Ixa
This project uses release-plz to automate release publishing.
### Create a new release PR
To create a new release, go to the Actions tab of the repo and open the
[Create Release PR](https://github.com/CDCgov/ixa/actions/workflows/release-plz-pr.yaml)
workflow.
Click the "Run workflow" and choose `main` to generate a new release PR
### Review the release PR
Take a look at the version bump and changelog that is created. You can pull the
branch and push additional manual changes to the changelog as needed before
merging.
Approve and merge the PR when everything looks good.
## Check crates.io
Take a look at crates.io to ensure that the new version of ixa got published. If
there was an issue, check the actions tab for any failed workflows.