Conventional Commits¶
Structured commit messages for automatic releases.
Overview¶
releasio uses Conventional Commits to:
- Determine version bumps automatically
- Generate changelogs from commit messages
- Categorize changes by type
%%{init: {'theme': 'neutral'}}%%
graph LR
A[Commit Message] --> B[Parse]
B --> C[Type + Scope]
C --> D[Version Bump]
C --> E[Changelog Entry]
Commit Format¶
Examples¶
# Simple feature
feat: add user authentication
# With scope
fix(api): handle null response
# Breaking change
feat!: redesign authentication flow
# With body and footer
feat(auth): add OAuth2 support
Implements OAuth2 authentication using the authorization code flow.
Supports Google, GitHub, and Microsoft providers.
BREAKING CHANGE: Legacy API key authentication has been removed.
Closes #123
Commit Types¶
| Type | Description | Version Bump |
|---|---|---|
feat |
New feature | Minor |
fix |
Bug fix | Patch |
docs |
Documentation only | Patch |
style |
Code style (formatting) | Patch |
refactor |
Code refactoring | Patch |
perf |
Performance improvement | Patch |
test |
Adding tests | Patch |
build |
Build system changes | Patch |
ci |
CI/CD changes | Patch |
chore |
Maintenance tasks | No bump |
Breaking Changes¶
Mark breaking changes with:
Exclamation Mark¶
BREAKING CHANGE Footer¶
git commit -m "feat: update authentication
BREAKING CHANGE: JWT tokens are now required for all endpoints.
API keys are no longer supported."
Both trigger a major version bump.
Scopes¶
Scopes provide additional context:
feat(api): add user endpoint
fix(ui): resolve button alignment
docs(readme): update installation steps
Common Scopes¶
| Scope | Use For |
|---|---|
api |
API changes |
ui |
User interface |
cli |
Command-line interface |
core |
Core functionality |
auth |
Authentication |
db |
Database |
docs |
Documentation |
deps |
Dependencies |
Configuration¶
Customize Bump Rules¶
.releasio.toml
[commits]
# Types that trigger minor bumps
types_minor = ["feat"]
# Types that trigger patch bumps
types_patch = ["fix", "perf", "docs", "refactor"]
# Types to ignore
types_ignore = ["chore", "ci", "style", "test"]
Breaking Change Patterns¶
Sections¶
-
Format Reference
Complete format specification
-
Custom Parsers
Parse non-conventional commits
Quick Reference¶
Valid Commits¶
✓ feat: add new feature
✓ fix(api): resolve null error
✓ feat!: breaking change
✓ docs: update readme
✓ refactor(core): simplify logic
Invalid Commits¶
✗ Add new feature # No type
✗ FEAT: add feature # Uppercase type
✗ feat add feature # Missing colon
✗ feat:add feature # Missing space
See Also¶
- Semantic Versioning - Version bump rules
- Changelog Generation - Release notes
- Configuration Reference - All options