开源贡献提交是在 GitHub 上进行操作,先熟悉几个专用名词。
Repository 是 Github 上最基本的元素,可以理解为一个项目文件夹,称为“仓库”或“库”。
Issue 一般出现在项目主页里,主要是大家提的一些建议,或者想反馈一些问题,可以提交Issue。
简称为 PR,指用户针对某个问题,或者更新一些东西所提交的申请。PR 是对开源项目进行贡献的必经之路,提交一个 PR,才有可能成为 contributor。一次 PR 可以进行多次 commit,因为不能保证修改的代码一次成功,可根据编译报错日志,或者 commiter 提出的修改建议,进行再次提交。
提交 PR 的前提,需要先 Fork 项目,可理解为复制项目。点击 Fork,可以将一个 repository 复制一份到个人账户下。
本文以 Apache Hudi 为例,详细介绍如何进行开源贡献,其他开源项目贡献流程类似。
1) 注册 Github 账号
(略)
2) fork项目
此操作将 Apache Hudi(https://github.com/apache/incubator-hudi)项目复制到个人远程仓库。
3)克隆
进入个人 GitHub 主页,复制链接,克隆到本地目录。
git clone https://github.com/username/incubator-hudi.git
4)添加upstream
进入项目目录,添加 Apache Hudi 为 upstream
// 进入项目目录
cd incubator-hudi/
// 与上游建立连接,上游是指一开始 fork 的项目源
git remote add upstream https://github.com/apache/incubator-hudi.git
添加完 upstream 后,执行 git remote -v 进行验证,如下图所示,即为配置成功。
5)配置用户名和邮箱
// 配置用户名和邮箱
git config user.name xxx
git config user.email xxx
为了更好的参与社区讨论,需订阅[email protected]开发者邮箱列表。
订阅方式:向[email protected]发送一封空邮件,然后马上会收到[email protected]回复的一封邮件,然后对该邮件再点击最下方的回复按钮进行一次回复即可。
几乎所有Apache顶级项目都是通过JIRA来管理issue,所以注册JIRA账号必不可少。
若登录后发现无 Assignto me(分配给我)按钮,那么需要向 [email protected] 邮箱发送一封JIRA权限开通申请邮件,可参照如下模版发送:
Hi,
I want to contribute to Apache Hudi.
Would you please give me the contributor permission?
My JIRA ID is xxx.
之后会收到项目 PMC 的回复邮件,如下图所示,即已完成相应权限的开通。
基于 master 分支 checkout 出一个新分支
// 进入项目目录
cd incubator-hudi/
// 新建 redoclientlog 分支
git checkout -b redoclientlog
然后在该分支上进行修改,可从简单的问题入手,如单词拼写错误,先熟悉流程。之后可对稍微复杂点或者自己感兴趣的问题进行贡献。
本地修改完成后,将代码 push 到个人远程仓库,执行如下命令:
git add .
git commit -m "备注信息"
git push origin redoclientlog:redoclientlog
上述步骤完成后,进入 Apache Hudi 的 Github 页面,会出现 Compare & pull request 按钮。
然后点击 Compare & pull request,补充PR描述信息后,点击 Create pull request 即可。
到这里,已经完成提交 PR 的过程,后续等待社区 commiter 帮忙 review 代码,根据意见修改代码,最终没问题后 merge PR。当 PR 合并后,即可成为该开源项目的 contributor。
过一段时间后,Apache 仓库的代码又有开发者提交新的更新,此时需要将本地代码与之进行同步,以下步骤介绍如何与源项目保持同步。
1.把远程分支upstream拉取到本地
git fetch upstream master
2.合并远程原始分支upstream代码
git merge upstream/master
3.把最新代码push到个人github上
git push upstream master
执行上述三个步骤,即可与 Apache 仓库 master 分支保持同步。
[链接] https://mp.weixin.qq.com/s/I12axUR-zQvgPtJcZYWA6w
[链接] https://mp.weixin.qq.com/s/2Ltj55JRk5x5qZU-SifYRg