《OceanBase开发者手册》之三 如何成为OceanBase Contributor

Abstract

本文将指导用户如何成为OceanBase Contributor, 即使是一个小白, 也可以成为contributor.

《OceanBase开发者手册》 主要指导开发者如何参与到OceanBase 的研发, 铺平参与OceanBase 开发的准备工作遇到的问题, 当前章节大概这几篇文章, 未来可能会增加部分文章, 目前OceanBase 源码参考OceanBase 开源官网的《开源数据库OceanBase源码解读》 系列 :

  1. 如何编译OceanBase源码
  2. 如何设置IDE开发环境
  3. 如何成为OceanBase Contributor
  4. 如何修改OceanBase文档
  5. 如何debug OceanBase
  6. 如何运行测试
  7. 如何修bug

步骤

准备工作

  1. https://github.com 上注册一个用户, 如果已经有了一个账户, 则跳过此步骤
    1. 因为现在github 不允许通过用户名和密码提交代码, 需要用户自己 创建token 来提交代码, https://docs.github.com/cn/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token , 用新的token 来代替过去的密码来提交.
  2. fork https://github.com/oceanbase/oceanbase 到自己github账户下
《OceanBase开发者手册》之三 如何成为OceanBase Contributor

如果已经fork 了代码, 在github 点击
《OceanBase开发者手册》之三 如何成为OceanBase Contributor

  1. 准备编译环境, 参考文档 how-to-build

代码编写

  1. 下载代码到本地,
1
# git clone https://github.com/${用户}/oceanbase

备注: ${用户} 为用户的名字

  1. 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 的编号

  1. 在IDE 中修改代码, 推荐使用vscode, 并且vscode 使用远程链接功能.
  2. 修改完代码后, 进行编译
1
2
#bash build.sh debug --init --make

大概等待10分钟

  1. 开始单元测试, 如果只是修改注释, 修改文档, 则不需要进行单元测试
1
2
3
# cd build_debug/unittest/
#make -j 4
#./run_tests.sh

整个过程, 需要1个小时

代码提交

1
2
3
4
5
6
7
8
9
10
# git status

# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: ../../src/${修改文件}
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

备注: ${修改文件}为修改文件
然后

1
2
3
git add ${修改文件}
git commit -m "fixed ${issue_number}, xxxxxxx"
git push origin issue${issue_number}

备注: ${issue_number}为issue的编号
commit的comments 需要带上”fixed ${issue_number}”, 这样可以将issue number 和pull request 关联起来
然后

创建pull request
《OceanBase开发者手册》之三 如何成为OceanBase Contributor

即可,

创建pull request 后, 需要 签署CLA, 如果已经签署了, 类似这样
《OceanBase开发者手册》之三 如何成为OceanBase Contributor

后续等待 OceanBase 的官方进行approve

其他注意事项

注意切换分支

当同时修改几个bug时, 每提交一个pull request 后, 就switch 到master上, 避免每个pull request 相互之间影响。

1
git checkout master

发生冲突

自己的fork 的master 分支有可能会与远程master分支出现冲突, 这个时候, 在自己的fork 分支上, 把冲突commit 给删掉, 然后merge remote 的分支

  1. 删除提交记录
1
git reset --soft HEAD~i

i代表要恢复到多少次提交前的状态,如指定i = 2,则恢复到最近两次提交前的版本。–soft代表只删除服务器记录,不删除本地。

  1. 执行
1
git push origin master --force

master代表当前分支