1. 主页
  2. 文档
  3. RobustMQ Tutorial CN
  4. 贡献指南
  5. GitHub 贡献指南

GitHub 贡献指南

在 GitHub 上贡献代码分为三步:

  1. Fork 项目
  2. 创建 ISSUE
  3. 创建 Pull Request

1、Fork 项目

2、创建 ISSUE

ISSUE 需要以固定的前缀开头:

  • RBIP-*: 是标识有特性和功能添加,比如 RBIP-09,RBIP-10,后面的序号是递增的。
  • BUG: 表示这是一个 Bug。则可以 BUG:开头,接标题。
  • MINOR:标识是修复或者增加一些小的功能。则可以 MINOR:开头,接标题。

示例如下:

3、提交 PR 失败的原因

License 错误

License checker / license-header-check (pull_request) 失败。 有的文件没加 License, 需要加一下,最好每次提交前执行下检查命令.

cargo install hawkeye

# 当前项目下执行, 检测有哪些文件没有加 License
hawkeye check

# 自动没每个代码文件加上 License
hawkeye format
标题格式错误

PR Title Checker / check (pull_request_target) 这个失败是 PR 的标题格式错误

前缀: 标题
前缀有这些选项:feat|fix|test|refactor|chore|style|docs|perf|build|ci|revert

feat: 新功能(feature)
例如:feat: Compatible with Rocksdb

fix: 修复 bug
docs: 文档变更
style: 代码风格变动(不影响代码逻辑),用于提交仅格式化、标点符号、空白等不影响代码运行的变更。
refactor: 代码重构(既不是新增功能也不是修复bug的代码更改)
perf: 性能优化
test: 添加或修改测试
chore: 杂项(构建过程或辅助工具的变动)
build: 构建系统或外部依赖项的变更
ci: 持续集成配置的变更,配置文件和脚本的修改。
revert: 回滚

3. 提交检查

检查代码格式

为了规范代码编写风格,RobustMQ 依赖 cargo fmt、cargo clippy 工具来规范代码,代码提交前可以在根目录执行下”sh codecheck.sh”,检查代码风格,根据提示进行修改,只要脚本执行成功,没有提示,则表示代码风格没问题。成功示例如下:

FWR3KG21WF:robustmq $ sh codecheck.sh 
2024-10-21T23:27:58.725602+08:00  INFO hawkeye_fmt::git: git.rs:56 git config is resolved to enabled
2024-10-21T23:27:58.937762+08:00  INFO hawkeye::subcommand: subcommand.rs:191 All files have proper header.
warning: `/Users/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
warning: `/Users/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
warning: `/Users/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
warning: /Users/Desktop/code/robustmq-project/robustmq/Cargo.toml: unused manifest key: workspace.package.*
warning: /Users/Desktop/code/robustmq-project/robustmq/Cargo.toml: unused manifest key: workspace.package.journal-server
   Compiling protocol v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/protocol)
    Checking metadata-struct v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/common/metadata-struct)
    Checking grpc-clients v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/grpc-clients)
    Checking placement-center v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/placement-center)
    Checking storage-adapter v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/storage-adapter)
    Checking cli-command v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/cli-command)
    Checking journal-server v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/journal-server)
    Checking mqtt-broker v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/mqtt-broker)
    Checking cmd v0.1.0-beta (/Users/Desktop/code/robustmq-project/robustmq/src/cmd)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.63s

运行测试用例

为了保证提交代码质量,RobustMQ 内置了完善的测试用例,在提交代码前,可以在根目录执行”make test”来检查测试用例是否全部正常。示例如下:

FWR3KG21WF:robustmq $  make test