《OceanBase开发者手册》之三 如何成为OceanBase Contributor
Abstract
本文将指导用户如何成为OceanBase Contributor, 即使是一个小白, 也可以成为contributor.
《OceanBase开发者手册》 主要指导开发者如何参与到OceanBase 的研发, 铺平参与OceanBase 开发的准备工作遇到的问题, 当前章节大概这几篇文章, 未来可能会增加部分文章, 目前OceanBase 源码参考OceanBase 开源官网的《开源数据库OceanBase源码解读》 系列 :
- 如何编译OceanBase源码
- 如何设置IDE开发环境
- 如何成为OceanBase Contributor
- 如何修改OceanBase文档
- 如何debug OceanBase
- 如何运行测试
- 如何修bug
步骤
准备工作
- 在https://github.com 上注册一个用户, 如果已经有了一个账户, 则跳过此步骤
- 因为现在github 不允许通过用户名和密码提交代码, 需要用户自己 创建token 来提交代码, https://docs.github.com/cn/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token , 用新的token 来代替过去的密码来提交.
- fork https://github.com/oceanbase/oceanbase 到自己github账户下
如果已经fork 了代码, 在github 点击
- 准备编译环境, 参考文档 how-to-build
代码编写
下载代码到本地,
1
# git clone https://github.com/${用户}/oceanbase
备注: ${用户} 为用户的名字
在https://github.com/oceanbase/oceanbase/issues 上找一个简单的issue,
推荐找一个拼写错误的issue, 修改这些issue 比较简单, 容易上手.
https://github.com/oceanbase/oceanbase/issues?q=is%3Aissue+is%3Aopen+label%3Atypos
创建对应的分支
1 | # git checkout -b issue${issue_number} |
备注: ${issue_number} 为issue 的编号
在IDE 中修改代码, 推荐使用vscode, 并且vscode 使用远程链接功能.
修改完代码后, 进行编译
1
2#bash build.sh debug --init --make
大概等待10分钟
开始单元测试, 如果只是修改注释, 修改文档, 则不需要进行单元测试
1
2
3# cd build_debug/unittest/
#make -j 4
#./run_tests.sh整个过程, 需要1个小时
代码提交
1 | # git status |
备注: ${修改文件}为修改文件
然后
1 | git add ${修改文件} |
备注: ${issue_number}为issue的编号
commit的comments 需要带上”fixed ${issue_number}”, 这样可以将issue number 和pull request 关联起来
然后
创建pull request
即可,
创建pull request 后, 需要 签署CLA, 如果已经签署了, 类似这样
后续等待 OceanBase 的官方进行approve
其他注意事项
注意切换分支
当同时修改几个bug时, 每提交一个pull request 后, 就switch 到master上, 避免每个pull request 相互之间影响。
1 | git checkout master |
发生冲突
自己的fork 的master 分支有可能会与远程master分支出现冲突, 这个时候, 在自己的fork 分支上, 把冲突commit 给删掉, 然后merge remote 的分支
- 删除提交记录
1 | git reset --soft HEAD~i |
i代表要恢复到多少次提交前的状态,如指定i = 2,则恢复到最近两次提交前的版本。–soft代表只删除服务器记录,不删除本地。
- 执行master代表当前分支
1
git push origin master --force