- From your fork of the repository, create a topic branch where work on your change will take place.
- To quickly create a topic branch based on main; `git checkout -b my_contribution main`. Please avoid working directly on the `main` branche.
- Make commits of logical units.
- Check for unnecessary whitespace with `git diff --check` before committing.
- Please follow the prevailing code conventions in the repository. Differences in style make the code harder to understand for everyone.
- Make sure you have added all the necessary unit tests for your changes.
- Run _all_ unit tests to assure nothing else was accidentally broken.
- Make sure your commit messages are in the proper format.
- The first line of the commit message should be a short description around 50 characters in length and be prefixed with the GitHub issue it refers to with parentheses surrounding that. If the GitHub issue is #25, you should have `(#25)` prefixed to the message.
- If the commit is about documentation, the message should be prefixed with `(doc)`.
- If it is a trivial commit or one of formatting/spaces fixes, it should be prefixed with `(maint)`.
- After the subject, skip one line and fill out a body if the subject line is not informative enough.
- Sometimes you will find that even a tiny code change has a commit body that needs to be very detailed and make take more time to do than the actual change itself!
- The body:
- Should wrap at `72` characters.
- Explains more fully the reason(s) for the change and contrasts with previous behavior.
- Uses present tense. "Fix" versus "Fixed".
- Contains a sign off statement to confirm that you agree to the [DCO](#DCO)
A good example of a commit message is as follows:
```text
(#123) Add more cowbell to Get-Something
The functionality of Get-Something would be greatly improved if there was a little
more 'pizzazz' added to it. I propose a cowbell. Adding more cowbell has been
shown in studies to both increase one's mojo, and cement one's status
as a rock legend.
Signed-off-by: Your Name <your@email.address>
```
## Documentation
We are not infallible and as such the documentation may need corrections. Please feel free to contribute changes to improve the documentation as described in the [Making Changes](#making-changes) and [Submitting Changes](#submitting-changes) sections.
## Submitting Changes
- Push your changes to a topic branch in your fork of the repository.
- Submit a pull request to the main repository.
- Once the pull request has been reviewed and accepted, it will be merged with the master branch.