Thanks for your interest in contributing this project. All issues and pull requests are highly appreciated!
Before sending a pull request to this project, please read and follow guidelines:
- Branch: We only accept pull requests on the
master
branch - Coding style: Follow the coding style used in Turbo
- Commit message: Use English and check your spelling
- Test: Make sure to test your code
Add device mode, API version, related log, screenshots and other related information in your pull request if possible.
NOTE: We assume all contributions can be licensed under the Apache License 2.0.
We love clearly described issues. :)
The following information can help us resolve the issue faster:
- Device mode and hardware information
- API version
- Logs
- Screenshots
- Steps to reproduce the issue
在贡献代码之前,请您稍微花一些时间了解为 Turbo 贡献代码的流程。熟悉和参与 Turbo 社区维护,最直接、快速的方式就是参与 issue 列表讨论,issue访问地址:https://github.com/didi/turbo/issues
无论是简单的错别字修正还是BUG 修复、代码优化或者是新功能的添加,我们都随时欢迎您的贡献,请踊跃提出问题或发起 PR。除此之外,我们同样很重视文档以及与其它开源项目的整合,欢迎在这方面做出贡献。
如果是一个比较复杂的修改,建议先在 Issue 中添加一个 Feature 标识,并简单描述一下设计和修改点。
如果您是初次贡献,可以先从 good first issue 和 help wanted 中认领一个比较简单的任务。
- 点击 本项目 右上角的
Fork
图标 将 didi/turbo fork 到自己的空间。 - 将自己账号下的 turbo 仓库 clone 到本地,例如我的账号的
lch
,那就是执行git clone https://github.com/lch/turbo.git
进行 clone 操作。
- 在自己的机器执行
git config --list
,查看 git 的全局用户名和邮箱。 - 检查显示的 user.name 和 user.email 是不是与自己 github 的用户名和邮箱相匹配。
- 如果公司内部有自己的 gitlab 或者使用了其他商业化的 gitlab,则可能会出现不匹配的情况。这时候,你需要为 turbo 项目单独设置用户名和邮箱。
- 设置用户名和邮箱的方式请参考 github 官方文档,设置用户名 ,设置邮箱 。
fork 出来的代码后,原仓库 Master 分支可能出现了新的提交,这时候为了避免提交的 PR 和 Master 中的提交出现冲突,需要及时 merge master 分支。
- 在你本机的 turbo 目录下,执行
git remote add upstream https://github.com/didi/turbo
将原始仓库地址添加到 remote stream 中。 - 在你本机的 turbo 目录下,执行
git fetch upstream
将 remote stream fetch 到本地。 - 在你本机的 turbo 目录下,执行
git checkout master
切换到 master 分支。 - 在你本机的 turbo 目录下,执行
git rebase upstream/master
rebase 最新代码。
Turbo项目有自己独有的代码格式规范,提交代码前需要先配置好代码格式规范。
开发自己的功能,所有代码改动必须提供单测,开发完毕后建议使用 mvn clean package
命令确保能修改后的代码能在本地编译通过。
- 同样,提交 PR 前,需要 rebase master 分支的代码,具体操作步骤请参考之前的章节。
- 如果出现冲突,需要先解决冲突。
git checkout master
git pull origin master
git checkout [自己的分支名] # 切换到自己的分支
git rebase master 变基, 合并后自己的分支为最新的代码
git push # 提送自己本地分支到自己的远程分支
提交 PR,根据 Pull request template
写明修改点和实现的功能,等待 code review 和 合并,成为 Turbo contributor,为更好用的 Turbo 做出贡献。
Pull reuqest命名格式: [ISSUE #{issue number}] body
需要注意ISSUE和其数字编号之间需要有一个空格,方括号与body之间也需要有空格,body的首字母大写。
Pull request描述格式:
What is the purpose of the change
XXXXXX
Brief changelog
XXXXXX
Verifying this change
XXXXXX
Commit Message包含对提交记录的简洁描述,包括类型、可选范围(模块)和简单描述。
Commit Message格式:
<type>(<scope>): <body>
<type>:
描述commit更改属于什么类型,可选的类型包括:feat: 新增 feature
fix: 修复 bug
docs: 仅仅修改了文档,比如 README, CHANGELOG, CONTRIBUTE等等
style: 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
refactor: 代码重构,没有加新功能或者修复 bug
perf: 优化相关,比如提升性能、体验
test: 测试用例,包括单元测试、集成测试等
chore: 改变构建流程、或者增加依赖库、工具等
revert: 回滚到上一个版本
<body>:
作用域,表示commit更改所属的模块。例如log, remoting, rpc, client, console, plugin, storage等,如果没有更合适的范围,你可以用 *。对Commit更改简短的描述,需要注意以下几点: 使用动宾结构,注意使用现在时,比如使用change 而非 changed 或 changes
首字母不要大写
语句最后不需要 ‘.’ (句号) 结尾
举例:docs(guide): update the developer guide