mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-23 11:57:34 +08:00
ci(workflows): add commit message and PR title quality checks
Add CI enforcement of conventional commit format for PR titles and commit messages. Includes three Python scripts under Tools/ci/: - conventional_commits.py: shared parsing/validation library - check_pr_title.py: validates PR title format, suggests fixes - check_commit_messages.py: checks commits for blocking errors (fixup/squash/WIP leftovers) and advisory warnings (review-response, formatter-only commits) The workflow (.github/workflows/commit_checks.yml) posts concise GitHub PR comments with actionable suggestions and auto-removes them once issues are resolved. Also updates CONTRIBUTING.md and docs with the conventional commits convention. Signed-off-by: Ramon Roche <mrpollo@gmail.com>
This commit is contained in:
+24
-25
@@ -149,36 +149,35 @@ else {
|
||||
|
||||
## Commits and Commit Messages
|
||||
|
||||
Use descriptive, multi-paragraph commit messages for all non-trivial changes.
|
||||
Structure them well so they make sense in the one-line summary but also provide full detail.
|
||||
PX4 uses [conventional commits](https://www.conventionalcommits.org/) for all commit messages and PR titles.
|
||||
|
||||
```plain
|
||||
Component: Explain the change in one sentence. Fixes #1234
|
||||
### Format
|
||||
|
||||
Prepend the software component to the start of the summary
|
||||
line, either by the module name or a description of it.
|
||||
(e.g. "mc_att_ctrl" or "multicopter attitude controller").
|
||||
|
||||
If the issue number is appended as <Fixes #1234>, Github
|
||||
will automatically close the issue when the commit is
|
||||
merged to the master branch.
|
||||
|
||||
The body of the message can contain several paragraphs.
|
||||
Describe in detail what you changed. Link issues and flight
|
||||
logs either related to this fix or to the testing results
|
||||
of this commit.
|
||||
|
||||
Describe the change and why you changed it, avoid to
|
||||
paraphrase the code change (Good: "Adds an additional
|
||||
safety check for vehicles with low quality GPS reception".
|
||||
Bad: "Add gps_reception_check() function").
|
||||
|
||||
Reported-by: Name <email@px4.io>
|
||||
```
|
||||
type(scope): short description of the change
|
||||
```
|
||||
|
||||
**Use **`git commit -s`** to sign off on all of your commits.** This will add `signed-off-by:` with your name and email as the last line.
|
||||
Where **type** is the category of change (`feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `build`, `ci`, `style`, `chore`, `revert`) and **scope** is the module or area affected (e.g. `ekf2`, `mavlink`, `navigator`). See the full [types and scopes tables](https://github.com/PX4/PX4-Autopilot/blob/main/CONTRIBUTING.md#commit-message-convention) in CONTRIBUTING.md.
|
||||
|
||||
This commit guide is based on best practices for the Linux Kernel and other [projects maintained](https://github.com/torvalds/subsurface-for-dirk/blob/a48494d2fbed58c751e9b7e8fbff88582f9b2d02/README#L88-L115) by Linus Torvalds.
|
||||
Append `!` before the colon to mark a breaking change: `feat(ekf2)!: remove deprecated API`.
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
feat(ekf2): add height fusion timeout. Fixes #1234
|
||||
|
||||
The previous implementation did not handle the case where
|
||||
height fusion data stops arriving mid-flight. This adds a
|
||||
configurable timeout that falls back to barometric height.
|
||||
|
||||
Tested in SITL with simulated sensor dropout.
|
||||
|
||||
Signed-off-by: Your Name <your@email.com>
|
||||
```
|
||||
|
||||
The body of the message can contain several paragraphs. Describe in detail what you changed and why. Link related issues and flight logs. Describe the change and why you made it, rather than paraphrasing the code change.
|
||||
|
||||
**Use `git commit -s` to sign off on all of your commits.** This adds `Signed-off-by:` with your name and email as the last line.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
|
||||
@@ -45,15 +45,15 @@ Adding a feature to PX4 follows a defined workflow. In order to share your contr
|
||||
git add <file name>
|
||||
```
|
||||
|
||||
If you prefer having a GUI to add your files see [Gitk](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces) or [`git add -p`](https://nuclearsquid.com/writings/git-add/).
|
||||
If you prefer having a GUI to add your files see [Gitk](https://git-scm.com/book/en/v2/Git-in-Other-Environments-Graphical-Interfaces) or [`git add -p`](https://nuclearsquid.com/writings/git-add/).
|
||||
|
||||
- Commit the added files with a meaningful message explaining your changes
|
||||
|
||||
```sh
|
||||
git commit -m "<your commit message>"
|
||||
git commit -s -m "feat(ekf2): add height fusion timeout"
|
||||
```
|
||||
|
||||
For a good commit message, please refer to the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section.
|
||||
Use [conventional commits](https://www.conventionalcommits.org/) format: `type(scope): description`. For details on types and scopes, see the [Source Code Management](../contribute/code.md#commits-and-commit-messages) section.
|
||||
|
||||
- Some time might have passed and the [upstream main](https://github.com/PX4/PX4-Autopilot) has changed.
|
||||
PX4 prefers a linear commit history and uses [git rebase](https://git-scm.com/book/en/v2/Git-Branching-Rebasing).
|
||||
|
||||
Reference in New Issue
Block a user