Thank you for your interest in contributing to Elytra! This document provides guidelines for contributing to the project.
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/elytra.git - Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Test your changes:
go test ./... - Commit your changes using conventional commits (see below)
- Push to your fork and create a pull request
This project uses Conventional Commits for automatic versioning and changelog generation. All commit messages must follow this format:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
- feat: A new feature (triggers MINOR version bump)
- fix: A bug fix (triggers PATCH version bump)
- docs: Documentation only changes (no version bump)
- style: Changes that do not affect the meaning of the code (no version bump)
- refactor: A code change that neither fixes a bug nor adds a feature (no version bump)
- perf: A performance improvement (triggers PATCH version bump)
- test: Adding missing tests or correcting existing tests (no version bump)
- chore: Changes to the build process or auxiliary tools (no version bump)
To indicate breaking changes, add an exclamation mark after the type:
- feat!: A new feature with breaking changes (triggers MAJOR version bump)
- fix!: A bug fix with breaking changes (triggers MAJOR version bump)
You can also include BREAKING CHANGE: in the commit body or footer.
# Feature addition (minor bump)
feat: add support for rustic backup encryption
# Bug fix (patch bump)
fix: resolve server startup crash on invalid config
# Breaking change (major bump)
feat!: change default configuration format from TOML to YAML
# Breaking change with body
feat: add new authentication system
BREAKING CHANGE: the old authentication tokens are no longer supportedOptionally, you can add a scope to provide additional context:
feat(backup): add compression optionsfix(sftp): resolve permission issuesdocs(readme): update installation instructions
To help with conventional commits, you can use our git message template:
git config commit.template .gitmessageOur release process is fully automated:
- Development: Work on the
mainbranch - Release: Merge to
productionbranch - Automatic: CI generates version, builds, and releases based on conventional commits
- MAJOR (1.0.0 → 2.0.0): Breaking changes (
feat!,fix!, orBREAKING CHANGE:) - MINOR (1.0.0 → 1.1.0): New features (
feat:) - PATCH (1.0.0 → 1.0.1): Bug fixes (
fix:,perf:)
- Use conventional commit format in your PR title
- Provide a clear description of your changes
- Include tests for new features
- Update documentation if needed
- Ensure all tests pass
- Keep PRs focused on a single change
Run tests before submitting your PR:
# Run all tests
go test ./...
# Run tests with race detection
go test -race ./...
# Build the project
make buildIf you have questions about contributing, please open an issue or reach out to the maintainers.
Thank you for contributing to Elytra!