Contribution Process#
Make your changes, push them to your fork and create a pull-request
The pull-request should target the
next
branchFor feedback/RFC then set up the pull-request as a Draft
The CI will trigger as you create the PR and re-triggered upon update
The default CI-jobs consists of running style/linters and building xNVMe
When ready for integration it will be marked
pr-ready-for-test
and a larger suite of functional tests are triggered
Go over the Pull-Request Checklist and re-iterate on your pull-request / changes
Pull-Request Checklist#
Please check your pull-request for the following:
The pull-request itself has a message describing the goal of the pull-request
Commits are squashed such that each commit is an incremental step towards the goal
All commits must have their commit messages formatted according to Commit Messages
Commits are rebased on top of
next
New functionality is accompanied by tests verifying it
The tests are passing
All review feedback is addressed
Commit Messages#
The first line is subject/title
Keep it at a max. of 72 chars, if possible
Lower-case is preferred
Do not end with a punctuation
Use the imperative mood e.g.
add
rather thanadded
/adds
Prefix with the component(s) e.g.
component: ...
If the commit touches the API (
libxnvme*.h
), then prefix withapi:
If the commit touches a backend, then prefix with specific backend e.g.
be/linux: ...
If the commit touches a “core” component, then prefix that, e.g.
buf: ...
,ident: ...
In case of multiple components, then separate with a comma e.g.
ident,be/linux: ...`
Example:
be/libaio: add spin-while-waiting for opts.poll_io
Then an empty line.
Then a description (may be omitted for truly trivial changes).
Should motivate the change and explain what and why, not how
Then an empty line again (if it has a description).
Then a Signed-off-by tag with your real name and email.
For example:
Signed-off-by: Foo Bar <foo.bar@example.com>
Use
git commit -s ...
to add the sign-off automaticallyBy adding
Signed-off-by
, you indicate that you agree to the DCO
Take a look at the commit history (git log --follow <files>
), for the files
you are changing, that should give you an idea of the “component” prefix(es) as
well as the other items on the list above.