Thanks for contributing. This file is the authoritative contribution guide for this repository.
- Repository:
github.com/feichai0017/NoKV - Main branch:
main - Go version:
1.26.x(seego.mod)
- Fork on GitHub and clone your fork.
- Add the upstream remote to keep your fork up to date.
- Install toolchain and dependencies.
git clone https://github.com/feichai0017/NoKV.git
cd NoKV
git remote rename origin upstream
go mod download
make install-toolsIf you use a fork-based workflow, add your fork as origin.
Use these branch prefixes:
feature/...for new featuresfix/...for bug fixesrefactor/...for non-functional refactorsdocs/...for documentation updates- Commit format:
<type>: <subject> - Common types:
feat,fix,refactor,docs,test,chore - Keep each commit focused on one logical change.
Run these before opening a PR:
make fmt
make lint
make testRecommended when changing concurrency-sensitive code:
make test-raceFor benchmark-related changes:
make bench- Rebase on latest
upstream/mainbefore opening or updating a PR. - PR description must include: what changed, why it changed, and how you validated it (commands + key results).
- Link related issue(s).
- Include docs updates when behavior/config/CLI changes.
- Keep PRs small enough for focused review.
- Use
gofmtformatting and passgolangci-lint. - Add/maintain GoDoc comments for exported symbols.
- Keep package boundaries clear; avoid cross-package coupling without need.
- Do not mix unrelated refactors with behavior changes in one PR.
- Add tests for every bug fix or behavior change.
- Unit test for local logic changes.
- Integration test for cross-module behavior changes.
- Bench evidence for performance-sensitive modifications.
- If a test cannot be added, explain why in the PR.
- Use GitHub Issues for bugs/features.
- Use the repository issue template when opening a new issue.
- For broad design topics, use GitHub Discussions first, then split into implementable issues.
When you change behavior, update related docs in the same PR:
README.mddocs/- config examples and scripts if flags/config fields changed
By contributing, you agree your contribution is licensed under Apache License 2.0, consistent with this repository.