Status
Accepted
Context
Commit messages are a key artifact in the development workflow, used for purposes such as tracking changes, generating release notes, and debugging issues. A well-structured commit message provides context for code changes and simplifies various development tasks. Adopting a standardized format can provide consistency and simplify tooling integrations.
Decision
The project will adopt the Conventional Commits specification for commit messages. Contributors will use the format type(scope): description
, where:
type
specifies the type of change (e.g.,feat
,fix
,refactor
,docs
,ci
).scope
(optional) indicates the part of the project affected.description
provides a concise summary of the change.
An example commit message following this specification may look like one of these:
feat: Allow stopping file discovery
feat(frontend): Allow stopping file discovery
feat(backend): Allow stopping file discovery
test: Add missing tests for S3 repository
fix: Fix application crashing during startup
-
feat!: Update GOG API to v2.0 BREAKING CHANGE: Old GOG API no longer supported
Consequences
Positive
- Clear and uniform commit messages enhance readability of the project history.
- Encourages atomic commits focused on a single class of change, improving clarity and reducing the risk of introducing bugs.
- Simplifies automation processes like changelog generation and release management.
Negative
- Contributors will need time to adapt to the format and learn its conventions.
- Manual enforcement of the format may result in occasional inconsistencies in commit history.