Commit
Syntax
Valid commit messages have the structure:
[product]\[type]([scope]/): #[issue-number] [title] // This is the commit title
// This blank line separates the commit title from the commit body
[body] // This is the commit body. It CAN have multiple lines
- [variable] are required variables that must be replaced in a final commit message ([] symbols must be removed)
- // Comment are comments that must be removed in a final commit message
Rules
The following rules must be met for a commit message to be valid:
-
[product] variable has to be one of the following, depending on which folder of the repository you are working on:
all // Runs the CI for all components
// in case you are modifying several components at once
airs // Main Fluid Attacks website https://fluidattacks.com
common // Infrastructure resources and utilities for all components
docs // This documentation site https://docs.fluidattacks.com
integrates // Fluid Attacks platform https://app.fluidattacks.com
observes // ETL suites to centralize information and enable analytics
skims // Automatic vulnerability scanner
sorts // Machine Learning tool to prioritize security analysis in GitIf you are working on a file in the root of the repository, outside all of these folders, use
common
. -
[type] variable has to be one of the following:
rever // Revert to a previous commit in history
feat // New feature
perf // Improves performance
fix // Bug fix
refac // Neither fixes a bug or adds a feature
test // Adding missing tests or correcting existing tests
style // Do not affect the meaning of the code (formatting, etc)
sol // Hacking solution only for writepus and training repo -
[scope] variable has to be one of the following:
front // Front-End change
back // Back-End change
infra // Infrastructure change
conf // Configuration files change
build // Build system, CI, compilers, etc (scons, webpack...)
job // asynchronous or schedule tasks (backups, maintenance...)
cross // Mix of two or more scopes
doc // Documentation only changes
vbd // Vulnerable by design hacking solution only for writeups repo
code // Programming challenge solution only for training repo
hack // ctf-hacking challenge solution only for training repo -
A Commit title must exist.
-
A Commit title must not contain the ':' character.
-
Commit title must have 60 characters or less.
-
Commit title must be lower case.
-
Commit title must not finish with a dot '.'.
-
Commit title must reference an issue.
-
Commit title must be meaningful. Avoid using things like
feat(build)[integrates]: #5 feature
. -
If commit title has sol type, it must reference issue #0.
-
A blank line between commit title and commit body must exist.
-
A commit body must exist.
-
Lines in commit body must have 72 characters or less.
-
If commit title has fix type and the fix comes from another commit, the body must reference the commit sha of the bug in the format
- commit: $COMMIT_SHA
(the full version of sha 40 with characters), If the fix is not related to a specific commit, use- commit: N/A
instead.
Possible combinations
Below is a table explaining all the possible combinations between types and scopes for a commit message (Types are columns, scopes are rows):
rever | feat | perf | fix | refac | test | style | |
---|---|---|---|---|---|---|---|
front | Revert front-end to a previous version | Add new feature to front-end | Improve perf in front-end | Fix something in front-end | Change something in front-end | Add tests for front-end | Change front-end code style |
back | Revert back-end to a previous version | Add new feature to back-end | Improve perf in back-end | Fix something in back-end | Change something in back-end | Add tests for back-end | Change back-end code style |
infra | Revert infra to a previous version | Add new feature to infra | Improve perf in infra | Fix something in infra | Change something in infra | Add tests for infra | Change infra code style |
conf | Revert config files to previous a version | Add new feature to config files | NA | Fix something in config files | Change something in config files | NA | Change config files code style |
build | Revert building tools to previous a version | Add new feature to building tools or add a new building tool | Improve building perf | Fix something in building tools | Change something in building tools | Add tests for building tools | Change building tools code style |
job | Revert jobs to previous a version | Add new feature to jobs or add a new job | Improve jobs perf | Fix something in jobs | Change something in jobs | Add tests for jobs | Change jobs code style |
cross | Revert several scopes to previous a version | Add new feature for several scopes | Improve perf in several system parts | Fix something in several system parts | Change something in several system parts | Add tests for several system parts | Change code style in several system parts |
doc | Revert doc to a previous version | Add new doc | NA | Fix something in doc | Change something in doc | NA | Change doc style |
Where:
- perf is performance.
- infra is infrastructure.
- config is configuration.
- doc is documentation.
- NA is not applicable.
Recommendations
-
Try to itemize your commit body:
- Add feature X in file Y
- Run script Z
- Remove file A with B purpose
Example
Here is an example of a compliant commit message:
integrates\feat(build): #13 add type_check
- Add type_check function
- Remove unnecessary print_output function
Search for vulnerabilities in your apps for free with Fluid Attacks' automated security testing! Start your 21-day free trial and discover the benefits of the Continuous Hacking Essential plan. If you prefer the Advanced plan, which includes the expertise of Fluid Attacks' hacking team, fill out this contact form.