First: If you are unsure or afraid of anything, just ask or submit the issue or pull request anyway. You will not be yelled at for giving it your best efford. The worst that can happen is that you'll be politely asked to change something. We appreciate any sort of contributions, and don't want a wall of rules to get in the way of that.
rsasl welcomes contributions from everyone. Here are the guidelines if you are thinking about helping us:
Contributions to rsasl should be made in the form of GitHub Pull Requests.
Issues that we think are easy to get started on are marked with the label "good first issue". These issues will generally also contain a sentence or two on the reasons why this issue is considered a good first issue.
Should you want to work on an issue please claim the issue first by commenting that you want to work on it. This is to prevent duplicate work on the same issue. If somebody else is already working on an issue they may be happy to work together with you too!
-
Branches should branch from the
development
branch, unless the PR is about fixing a bug or some high-priority issue. If needed, rebase your branch to the currentdevelopment
before submitting your PR. If a PR can not be merged cleanly you may be asked to rebase your changes. -
Commits should be accompanied by a Developer Certificate of Origin (https://developercertificate.org/) to indicate that you (and your employer if applicable) agree to be bound by and release your changes under the licensing terms of the project.
In git the certificate can easily be added by using
git commit -s
to commit. -
To make bisecting issues easier commits should be small but independent (i.e. compile and be testable). A good guideline for commit size is in fact the smallest set of changes that compiles and passes tests. If a change affects a hundred files, a 'small' commit can very much span all those hundred files.
-
rsasl uses a merge-focused workflow. Rebases should only happen to update a feature branch to the latest upstream development or similar. Additionally, please do not squash a PR into a single commit unless it is a very small change.
rsasl
has a release workflow based on gitflow-avh
and crateci's cargo-release
.
- Make sure you have the required git-hook installed and marked executable. The release process specifically requires the file tools/pre-release.sh to be installed as
.git/hooks/pre-release.sh
. cargo release [level]
wherelevel
defines what version number to bump to and is further described in the cargo-release reference.- This will perform a dry-run and not make or commit any changes. Use it to verify that everything will happen as intended.
cargo release -x [level]
to perform the release. This will drop you on a newrelease/[new version]
branch with changes to the Cargo.toml and CHANGELOG.md already added to be committed.- Verify everything that needs to be included for the release is included.
- Run any pre-release tests and checks
- Finalize the release with
git flow release finish
. This will merge all branches as required and drop you into an editor to finalize the tag name and description.
- Push the
development
andmain
branch, and the newly created tag upstream:git switch main && git push
git switch development && git push
git push --tags