Skip to content

Contributing

Commit message convention

"Commit messages must follow our convention based on Angular Style or Karma convention:

<type>[(scope)]: Subject

[Body]

Subject and body must be valid Markdown. Subject must have proper casing (uppercase for first letter if it makes sense), but no dot at the end, and no punctuation in general.

Scope and body are optional. Type can be:

  • feat: New feature.
  • test: About tests.
  • deps: Dependencies update.
  • build: About packaging, building wheels, etc.
  • docs: About documentation.
  • ci: About Continuous Integration.
  • doc: About documentation.
  • refactor: Changes that are not features or bug fixes.
  • style: A change in code style/format.
  • perf: About performance.
  • ref: Code refactoring.
  • chore: About packaging or repo/files management.
  • tests: About tests.
  • fix: Bug fix.
  • revert: Code revert.

If you write a body, please add trailers at the end (for example issues and PR references, or co-authors), without relying on GitHub's flavored Markdown:

Body.

Issue #10: https://github.com/namespace/project/issues/10
Related to PR namespace/other-project#2: https://github.com/namespace/other-project/pull/2

These "trailers" must appear at the end of the body, without any blank lines between them. The trailer title can contain any character except colons :. We expect a full URI for each trailer, not just GitHub autolinks (for example, full GitHub URLs for commits and issues, not the hash or the #issue-number).

We do not enforce a line length on commit messages summary and body, but please avoid very long summaries, and very long lines in the body, unless they are part of code blocks that must not be wrapped.

Pull request guidelines

Link to any related issue in the Pull Request message.

During the review, we recommend using fixups:

git commit --fixup=SHA # SHA of commit you want to fix

Once all the changes are approved, you can squash your commits:

git rebase -i --autosquash main

And force-push:

git push -f

If this seems all too complicated, you can push or force-push each new commit, and we will squash them ourselves if needed, before merging.