chore: add contribution guidelines
This commit is contained in:
parent
c134776f47
commit
5637e73b10
1 changed files with 84 additions and 0 deletions
84
CONTRIBUTING.md
Executable file
84
CONTRIBUTING.md
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
# CONTRIBUTION GUIDELINES
|
||||
|
||||
This document describes guidelines for contributing source code (and other)
|
||||
data to this repository, as well as principles for working.
|
||||
|
||||
## Source Code Management (Git)
|
||||
|
||||
### Versioning
|
||||
|
||||
This project uses [semantic versioning (SemVer)](https://semver.org/) for
|
||||
software release versioning.
|
||||
|
||||
Should the Git HEAD have a tag with a SemVer string prefixed with v as a name,
|
||||
and the Git stage be empty, this version MUST then be obliged to in all build
|
||||
processes as a release.
|
||||
|
||||
However should the Git stage not be empty, or the HEAD not be tagged, the patch
|
||||
version MUST BE incremented by supplying *dev* suffixed with a unique random
|
||||
string.
|
||||
|
||||
### Branching
|
||||
|
||||
Modular branches (e.g. *foo/bar*, not *foo*) MUST correspond to an issue inside
|
||||
an issue tracker.
|
||||
|
||||
Therefore, all source code changes for features MUST be tracked in a Git branch
|
||||
`feat/$ISSUE`, wheras `$ISSUE` is the id of the corresponding issue inside
|
||||
the issue tracker. Bugs are tracked under `bugfix/$ISSUE` and hotfixes are
|
||||
tracked under `hotfix/$ISSUE`.
|
||||
|
||||
### Releasing
|
||||
|
||||
Features and bugfix branches must be (squash) merged into the Git branch `dev`
|
||||
for releasing.
|
||||
|
||||
Preparing a release as this program’s maintainer requires one to create a
|
||||
`release/$SEMVER` branch and have the release tested by whoever
|
||||
opened the issue, or feature. If bugs are found, they must be tracked inside
|
||||
the issue tracker and once concluded must be integrated into the
|
||||
`release/$SEMVER` branch and tested through whoever opened the bug. Once
|
||||
the bug is resolved, the `release/$SEMVER` branch MUST be (fast-forward)
|
||||
merged into the `dev` branch. The release can only be concluded if the HEAD
|
||||
of the `release/$SEMVER` branch is tagged with a SemVer version string.
|
||||
|
||||
Afterwards the `release/$SEMVER` branch MUST be merged (no fast-forward) into
|
||||
the `master` Git branch.
|
||||
|
||||
Each release (irrelevant of it being a major, minor, or patch release) must
|
||||
have a dedicated changelog release note.
|
||||
|
||||
Copy the release note of the previous release from
|
||||
`doc/changelogs/%Y%M%D %d.%d.%d.rst` and increment the date and version of
|
||||
the filename, as well as chapter title. Next make sure to stick to the
|
||||
Keep-A-Changelog format and describe the changes only through *Fixed*,
|
||||
*Changed*, *Added* sections.
|
||||
|
||||
Afterwards, include the release note inside the changelog and add a link to the
|
||||
web page of the Git repository tag.
|
||||
|
||||
### Commit Messages
|
||||
|
||||
This project uses
|
||||
[conventional commit messages](https://www.conventionalcommits.org/en/v1.0.0/).
|
||||
|
||||
Do write your messages for humans. Humor and Emojis are welcomed, as long as
|
||||
commit messages are well-formed and understandable.
|
||||
|
||||
Additionally, the following rules apply.
|
||||
|
||||
Well-known commit types SHOULD be used, which includes:
|
||||
|
||||
* `feat` (e.g. adding a new functionality)
|
||||
* `fix` (e.g. making something work correctly)
|
||||
* `style` (e.g. prefixing all class names in a namespace)
|
||||
* `chore` (e.g. routine bump of dependency version)
|
||||
* `refactor` (e.g. changing code without changing the behavior)
|
||||
* `docs` (e.g. updating a description like a docstring/comment of something)
|
||||
|
||||
### Commit signatures
|
||||
|
||||
All commits MUST be PGP-signed. See
|
||||
[7.4 Git Tools - Signing Your Work](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work)
|
||||
in the Git SCM documentation for more information on configuring Git clients to
|
||||
use GnuPG for signing Git commits.
|
||||
Loading…
Add table
Add a link
Reference in a new issue