社区行为准则
无论是用户还是贡献者,只要参与到 Cloudberry Database 中来,都有义务遵守我们的社区行为准则。
准备工作
在开始贡献之前,请阅读文档《如何做出贡献》,并确保已掌握 Git 和 GitHub 使用技巧。
特别是作为代码贡献新人,不要急于开始。请先熟悉 Cloudberry Database 社区,了解项目,阅读相关文档,学习代码规范,知道如何编写提案等,然后从小处着手。
你可以寻找一些要修复的简单问题或要添加的小功能,例如带有“good first issue”和“help wanted”标签的 GitHub issue,这些可以帮你熟悉贡献流程,并借此认识开发团队成员。
此外,所有代码贡献者都需要签署贡献者许可协议(Contributor License Agreement,CLA),在你提交第一个 Pull Request 时根据 CLAassistant 提示进行签名即可(首次签署成功后,后续无需重复签署)。
如果你从 PostgreSQL 或 Greenplum Database 等上游项目中 cherry pick 某些提交,上游贡献者无需签署 CLA,此时忽略 CLAassistant 的警告即可,该警告提示不对你的 Pull Request 合并产生实质影响。
此外,请不要更改(删除)代码文件中的原始版权信息和开源许可证文件头。如果你对文件做了大范围修改,则可以在原许可证文件头之后添加版权信息。
不要引入遵循 GPLv2/3 或其他非 OSI 许可证的组件,引入此类许可组件会干扰 Cloudberry Database 现在使用的 Apache 许可证。如果你对此不太确定,请联系 info@cloudberrydb.org。
为避免重复工作,请在开始开发重要功能之前查看已有 Cloudberry Database 提案或直接在我们的 Slack 或微信群等渠道进行沟通。
代码规范
提交至 Cloudberry Database 的所有代码都应该遵循 PostgreSQL 代码规范。
代码格式
主要包括遵循 PostgreSQL 风格使用制表符(4 个空格)进行源代码格式化,根据 BSD 风格设定布局规则,以及行长限制在 80 列以内。虽然 PostgreSQL 代码库中存在许多不同的风格,但我们采取“就近原则”──努力使补丁代码与上下风格保持一致(参见 PostgreSQL 邮件列表讨论)。
可以使用现有的编辑器配置进行 Cloudberry Database 开发,比如 Vim、Emacs、Clion 以及其他编辑器。
错误信息
错误信息风格遵循 PostgreSQL 错误信息风格指南。
贡献流程
下面将介绍如何通过发起 Pull Request
向 Cloudberry Database 提交代码贡献。如果你还不太了解如何使用 Git 和 GitHub,请再次阅读我们的使用指南。
要向 Cloudberry Database 提交贡献,请按如下步骤操作:
-
将 Cloudberry Database 仓库 Fork 到个人 GitHub 帐号下。
-
将项目仓库克隆到本机。
$ git clone https://github.com:your-user-name/cloudberrydb.git
-
添加上游仓库(你只需执行本次操作,后续可跳过该步骤)。
$ git remote add upstream https://github.com/cloudberrydb/cloudberrydb.git
现在,在终端运行
git remote -v
,你可以看到显示 2 个远程仓库:upstream
,代表 'cloudberrydb' 仓库origin
,代表个人 Fork 的仓库
-
创建并切换到新分支。
$ git checkout -b new-branch-name
-
在新分支上进行开发,编写代码并运行测试。
-
在本地保存变更。可参考提交规范指南,以确保提交的信息符合规范。
$ git add
$ git commit -
将本地变更推送到 GitHub 远端仓库。
git push origin branch-name
-
提交一个 Pull Request。
前往 GitHub 上的 Cloudberry Database 仓库网页,你会看到一条关于你最近推送分支的消息,询问你是否要打开一个 Pull Request。点击创建按钮,然后比较两个仓库异同,接着正式提交 Pull Request 即可。
对于代码贡献者来说,当你持续优化你的提交时,不要删除审核者的留言或评论。你可以新增变更提交,将其推送到当前 Pull Request 中来。
-
启动代码评审。
Cloudberry Database 维护者或其他贡献者将审阅你的 Pull Request,你可以与他们保持互动,配合优化需要做出改动的地方。如果你的 Pull Request 在 2 周内迟迟无人审阅,可在评论中
@
活跃的维护者邀请他们评审。一旦维护者接受变更,他们会批准通过你的 Pull Request。
-
恭喜!一旦你的 Pull Request 获得批准,并通过 CI/CD 验证且无错误,代码就能合并到主仓库,并包括在后续新发布的版本中。
在开始下次贡献前,请确保本地仓库与远程仓库保持同步:
-
切换到本地主分支。
$ git checkout main
-
从上游仓库拉取最新变更。
$ git fetch upstream
-
针对新的开发工作,创建一个新分支。
$ git checkout -b branch-name
如果要将上游的变更应用到当前现有分支,首先要切换到对应分支 git checkout branch-name
,然后通过命令 git rebase upstream/main
将上游变更应用到最新代码之上。
我们希望你的 Pull Request 有一个干净的提交历史,但在实际操作过程中,你可能会将多个提交推送到一个 Pull Request 里。为确保提交历史整洁,请在合并 Pull Request 之前运行 git rebase -i
将多个提交压缩到 1 个提交里。
了解更多 Git 操作: