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:
typespecifies the type of change (e.g.,feat,fix,refactor,docs,ci).scope(optional) indicates the part of the project affected.descriptionprovides a concise summary of the change.
An example commit message following this specification may look like one of these:
feat: Allow stopping file discoveryfeat(frontend): Allow stopping file discoveryfeat(backend): Allow stopping file discoverytest: Add missing tests for S3 repositoryfix: 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.