Thank you for considering contributing to configdiff!
This project follows strict GitHub workflow practices:
- Never commit directly to
main- All changes must go through Pull Requests - Branch protection is enabled - PRs must pass all status checks before merging
- Linear history preferred - Use rebase workflows when possible
- Fork the repository
- Clone your fork locally
- Create a feature branch from
main - Make your changes with tests
- Ensure all tests and checks pass
- Push your branch and open a Pull Request
# Clone the repository
git clone https://github.com/pfrederiksen/configdiff.git
cd configdiff
# Install dependencies
go mod download
# Run tests
go test ./...
# Run tests with race detector
go test -race ./...
# Run tests with coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
# Run linter
golangci-lint run- Test Coverage: Maintain high test coverage. All new features must include tests.
- Documentation: All exported types and functions must have GoDoc comments.
- Linting: Code must pass
golangci-lintchecks. - Performance: Consider performance implications; correctness comes first.
- Simplicity: Avoid over-engineering. Keep solutions focused and minimal.
- Write table-driven tests for unit tests
- Use golden files in
testdata/for output validation - Include fuzz tests where appropriate (parsing, normalization)
- Test edge cases and error conditions
- Ensure deterministic test behavior
- Title: Use conventional commit style (e.g.,
feat: add array set support,fix: handle null values) - Description: Clearly explain what changed and why
- Tests: Include test evidence (coverage reports, test output)
- Scope: Keep PRs focused on a single concern
- Documentation: Update README and GoDoc as needed
Follow conventional commits:
<type>: <short description>
<optional body>
<optional footer>
Types: feat, fix, docs, test, refactor, perf, chore, ci
Open an issue for discussion before starting work on major features.