一、 开源社区概述
openGauss社区按照不同的SIG(Special Interest Group)来组织,以便于更好的管理和改善工作流程。SIG是开放的,欢迎任何人加入并参与贡献。每一个SIG在码云(gitee)上拥有一个或多个代码仓库。您可以在SIG对应的代码仓库上提交Issue(问题),参与Issue讨论,提交“Pull Request”(PR,拉取请求),参与代码检视等。您可以从表中找到您感兴趣的SIG。
表 SIG说明
SIG名称 | 职责范围 |
SQLEngine | 负责openGauss社区SQL引擎的开发和维护 |
StorageEngine | 负责openGauss社区存储引擎的开发和维护 |
Connectors | 负责openGauss社区Connectors的开发和维护 |
Tools | 负责openGauss社区工具的开发和维护 |
Docs | 负责openGauss社区文档的开发和维护 |
Infra | 负责openGauss社区基础设施的开发和维护 |
Security | 负责openGauss社区安全的开发和维护 |
二、社区环境准备
用户需要完成码云账号注册、绑定主邮箱以及签署CLA(contribution license agreement,贡献许可协议)之后,才能参与社区贡献。
1. 注册码云账号
(1) 登录码云官网(https://gitee.com/),单击页面右上角的“注册”按钮注册账号。
(2) 在注册页面填写相关信息并勾选阅读和同意相关条款,完成码云注册。如图2-13所示。

注册信息
必填信息如下。
(1) 姓名:码云账号名称。
(2) 个人空间地址:注册账号主页地址,可用作推拉代码或者登录Gitee的用户名。
(3) 手机或者邮箱:验证需要。建议使用邮箱注册,默认为主邮箱,无须执行绑定主邮箱操作。
(4) 密码:密码不少于6位。建议为字母、符号和数字的组合,以提升安全性。
2. 绑定主邮箱
(1) 在“个人主页”页面,单击“设置”按钮进入“个人信息”设置页面。如图所示。

“设置”按钮
(2) 在左侧导航栏单击“多邮箱管理”,修改或者绑定主邮箱。主邮箱默认为注册时使用的邮箱。如图所示。

多邮箱管理
3. 签署CLA贡献者协议
进入CLA签署页面(https://opengauss.org/en/cla.html),填写相关信息,完成CLA签署。如图所示。

CLA签署
三、提交issue
如果您准备向社区上报Bug或者提交需求,请在openGauss社区对应的仓库上提交Issue。 您也可以以Issue的方式为openGauss社区贡献自己的意见或建议。
(1) (1) 确认问题所属的仓库(repository)并进入。
(2) 在repository的工具栏内单击“Issue”,再单击创建“+新建Issue”按钮新建issue。如图所示。

新建issue
(3) 输入issue的标题名称并选择对应的issue类型。issue的标题名称中请简要的描述问题现象和影响。如图所示。

issue信息
(4) 在详细描述框中,请按照模板说明问题发生的细节。
(5) 填写完成后,输入验证码并单击“创建”。
Issue创建后将会有社区参与者进行解答。您也可以执行如下命令将issue分配给指定的人。
/assign 账号
四、贡献代码和文档
您可以自行修改代码和文档,并通过提交PR将修改合入主干版本。
1. 拉取个人分支
(1)进入docs(文档仓库)或者openGauss-server(代码仓库)。此处以docs(文档仓库)举例。如图所示。

docs(文档仓库)
(2) 单击右上角“Forked”按钮,Fork(复刻)个人分支。如图所示。

Fork个人分支
2. 修改代码和文档
目前有两种修改代码和文档的方式,Git(分布式版本管理软件)方式修改以及WEB((World Wide Web,即全球广域网,这里指的是在网页上操作)方式修改。
1) Git方式修改
Git方式修改,即在本地通过Git工具将修改一次性提交至远端个人仓库。此方法适用于大量以及批量修改,例如特性更新等场景。
(1) 安装Git。下载Git并按默认设置安装。Git下载地址:https://git-scm.com/downloads。
(2) 配置Git。
配置Git上的user为您的gitee个人名称。
git config --global user.name "your gitee name"
‚ 配置Git邮箱为您的gitee注册邮箱。
git config --global user.email "your Gitee email"
your Gitee email 为gitee注册邮箱。您可以在gitee个人主页获取。
ƒ 生成SSH公钥。
ssh-keygen -t rsa -C "your Gitee email"
„ 执行如下命令获取公钥。
cat ~/.ssh/id_rsa.pub
“.ssh/id_rsa.pub”为公钥文件保存地址。“id_rsa.pub”为自定义的pub文件名称。
… 在个人Gitee账户中添加您的SSH公钥。如图所示。

SSH公钥三方件编译
(3) 复制远程个人仓库至本地。
在个人电脑本地创建文件夹openGauss,存放远程仓库文件。
‚ 在Git工具中执行如下命令复制远程仓库至本地。
# 进入存放个人远程仓库的本地目录openGauss
cd D:\openGauss
# 把远程仓库复制到本地
git clone https://gitee.com/"your Gitee Name"/repository_name #个人远程仓库地址
# 设置本地工作目录的upstream(上行)源
git remote add upstream https://gitee.com/opengauss/docs.git #openGauss远程地址
# 设置同步方式
git remote set-url --push upstream no_push(4) 修改内容并将本地修改提交至远程个人仓库。
(可选)如果非首次修改本地文件,建议您执行如下操作,使远程仓库与本地仓库保持一致。
在个人仓库页面,单击如下图标将主仓库的内容更新至个人远程仓库。如图所示。

更新个人仓库
在本地Git工具执行如下命令,将个人远程仓库内容更新至本地仓库。
git fetch upstream
git merge upstream/master
‚ 进入本地文件夹,修改本地文件。
ƒ 在文件所在目录下打开Git工具,在Git工具中执行如下命令,提交本地修改至个人远程仓库。
如果修改了多个文件夹下的文件,建议依次进入每个子文件夹下面,执行提交操作。
git add .
git commit -m "提交原因"
git push origin master
2) WEB方式修改
WEB方式修改,即直接在web网页上修改Markdown文件,适用于内容较少的修改。例如维护版本的日常问题处理。
(1) 进入个人Fork路径,单击“Web IDE(integrated development environment,集成开发环境)”。如图所示。

Web IDE
(2) 在左侧导航栏找到对应文件进行编辑。
(3) 修改完成后,单击顶部“Markdown预览”检查修改内容。
(4) 提交。先单击+保存修改,填写修改原因后提交到当前分支。如图所示。

提交
3. 提交PR
提交PR可以将远程个人仓库的修改合并至主干中。
(1) 进入个人Fork路径,检查修改的内容是否已合入。如图所示。

合入信息
(2) 在“Pull Requests”页面单击“+新建Pull Request”。
(3) 输入修改的详细信息,并单击“创建”。如图所示。

创建
(4)提交完成等待committer(代码提交者)审核后合入。
五、Git使用
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
1. 下载
Git下载地址:https://git-scm.com/downloads。
2. 常见命令
(1) 仓库。
在当前目录新建一个Git代码库。
git init
(2) 配置。
设置提交代码时的用户信息。
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
(3) 增加、删除文件。
添加指定文件到暂存区。
git add [file1] [file2] ...
(4) 代码提交。
提交暂存区到仓库区。
git commit -m [message]
提交暂存区的指定文件到仓库区。
git commit [file1] [file2] ... -m [message]
(5) 分支。
列出所有本地分支。
git branch
列出所有本地分支和远程分支。
git branch -a
(6) 查看信息。
显示有变更的文件。
git status
显示当前分支的版本历史。
git log
(7) 远程同步。
下载远程仓库的所有变动。
git fetch [remote]
取回远程仓库的变化,并与本地分支合并。
git pull [remote] [branch]
上传本地指定分支到远程仓库。
git push [remote] [branch]




