Alluxio是全球首个分布式超大规模数据编排系统,孵化于加州大学伯克利分校AMP实验室。自项目开源以来,已有超过来自300多个组织机构的1100多位贡献者(干饭人)参与开发。

此教程,将由Alluxio开源布道师傅正佳博士手把手带你完成新手贡献者任务(new-contributor task)并成为Alluxio开源项目的贡献者(contributor)。下面为教程的视频与文字版,可结合学习。

点击查看视频教程

文字教程

提前准备

在开始之前,请确保满足以下条件:
① 电脑系统是MacOS或Linux
② 电脑上已安装Git (https://git-scm.com/downloads)
③ 登录Github (https://github.com/login)

 

1. 在Github上复刻(fork)Alluxio 存储库(Repository)

首先,在你的Github账户下fork Alluxio存储库(https://github.com/alluxio/alluxio),作为本地修改推送的目的地。点击Alluxio存储库主页(https://github.com/Alluxio/alluxio)右上角的“Fork”按钮(如下图所示)。

如果已经fork过存储库,Github上会出现 “You’ve already forked alluxio”(你已经fork了alluxio)的提示信息。

完成这一步后,你就已经成功地在你的GitHub账户下创建了你自己的Alluxio存储库的folk,可通过 “https://github.com//alluxio”浏览该存储库,将“”替换成你的github账户ID即可。

 

2.在电脑上创建存储库副本

下一步,在你的电脑上用Git创建一个Alluxio的本地副本,并将fork的所有文件下载到你的电脑上。打开电脑终端并运行该命令。

$ git clone https://github.com//alluxio.git

 

这行命令将在 alluxio/ 目录下创建所有文件的副本。完成这一步骤可能需要几分钟时间,取决于网速,完成后即可看到如下输出:

Receiving objects: 100% (493591/493591), 137.79 MiB | 5.81 MiB/s, done.
Resolving deltas: 100% (241641/241641), done.

 

3. 配置本地存储库

在贡献( contribute )之前,我们还需要对本地存储库进行一些配置。本教程中接下来的命令均假设当前工作目录位于复制到本地的存储库的根目录下( alluxio/ )。

$ cd alluxio

 

在Git中设置提交贡献的邮件(https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git),以便跟踪和确认你的贡献。

 

$ git config --local user.email "email@example.com"

 

在这个设置中,email@example.com 是你与Github账户关联的电子邮件。如果你的电子邮件尚未与GitHub账户关联,请检查你的Github配置文件中的电子邮件设置。

 

4. 选取一个新手贡献任务

从这个Alluxio新手贡献者任务(https://github.com/Alluxio/new-contributor-tasks/issues)列表中,选择任何一项尚未分配的(unassigned)的任务。如果你想要将某个issue分配给自己,可在issue里评论,如/assign @yourUserName,表明你正在处理该issue。在开始之前,确保已将该工单分配给自己,以便社区里的其他人知道你正在处理该工单。

现在,开始处理任务吧!

 

5. 在本地的副本中创建功能分支(Feature Branch)

在向Alluxio提交修改时,将同一个issue的所有修改保存在对应的分支中。创建新的分支来处理你承担的新手任务。例如,如果要基于master分支(默认分支)创建一个名为 “awesome_feature”的分支并切换到该分支,你需要运行:

$ git checkout -b awesome_feature master

 

现在,你可以通过修改必要的代码来处理该issue。

 

6. 创建本地提交(Commits)

在处理工单时,可创建代码本地提交,这在完成对已经定义好的部分的修改后会很有用处。

首先,使用以下命令stage要提交的文件:

$ git add

 

相应的文件stage完成后,使用下述命令创建修改的本地提交:

$ git commit -m ""

如果想要了解有关如何更新Alluxio源代码的更多信息,请阅读Alluxio 编码规范(https://docs.alluxio.io/os/user/stable/en/contributor/Code-Conventions.html)。关于创建提交的更多信息,请查看创建提交指南(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)。

 

7. 推送本地修改

在完成该issue的所有修改后,就可以向Alluxio项目提交pull request(拉取请求,简称PR)了!请查看发送拉取请求详细说明(https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests),或参照下述常规操作:

将你提交的分支推送到GitHub上你fork的存储库中。针对awesome_feature分支,使用下面的命令推送到GitHub:

$ git push origin awesome_feature

 

8. 创建拉取请求

打开浏览器,输入“https://github.com//alluxio/pull/new/awesome_feature”,会出现下面的表格,填写后可创建拉取请求。

对你的拉取请求取个有效的标题非常重要

以下是根据现行规则(https://cbea.ms/git-commit/#seven-rules)总结的有关标题的建议和规则。
① 标题不宜过长(<~50个字符),也不宜过短(应描述清晰)
② 标题以imperative verb(祈使动词)开头a. 正确示例:Fix Alluxio UI bugs, Refactor Inode caching logicb. 错误示例:~~Fixed Alluxio UI bugs~~, ~~Inode caching refactor~~c. 从标题起始词清单中选用合适的动词
③ 标题的首词需大写
④ 标题结尾不加句号

以上规则也有例外。标题的开头可加前缀,前缀应使用大写字母,并与标题的其他部分以空格隔开。以下是可以使用的前缀:
① [DOCFIX]:该前缀可用于文档更新的拉取请求示例:[DOCFIX] Update the Getting Started guide, [DOCFIX] Add GCS documentation
② [SMALLFIX]:这一前缀可用于不影响逻辑的小修改,比如拼写错误示例:[SMALLFIX] Fix typo in AlluxioProcess, [SMALLFIX] Improve comment style in GlusterFSUnderFileSystem

写好拉取请求描述也十分重要

请注意,Github上的所有新手贡献者的issue都有编号。该编号在issue标题后面,比如#123。当创建拉取请求来处理该issue时,应添加一个链接到该issue的link/pointer, 因此须在拉取请求的描述中添加一些文字。例如,如果issue编号是#123,则应在拉取请求描述中包括以下内容:
① Fix Alluxio/new-contributor-tasks#123
② Close Alluxio/new-contributor-tasks#123

这篇现行规则文章很有帮助,你可以阅读里面的建议和规则。
全部设置完毕后,点击Create pull request(创建拉取请求)按钮。
恭喜!你的第一个Alluxio拉取请求已提交!

9 完成代码审核

拉取请求提交后,可在 Alluxio存储库拉取请求页面上查看。
在提交后,社区中的其他开发者会对你的拉取请求进行审核。其他人可能对你的拉取请求添加评论或进行提问。社区将针对你的修改进行测试和审查,确认修改安全,可以合并。
在代码审核过程中,请回复审核人留下的所有评论,以便跟踪哪些评论已被处理以及如何处理。

如果审核人提出意见或者测试和审查不合格,则可能需要对代码进行额外的修改。在本地做完所需修改后,应创建一个新的提交,并将其推送到远程分支。GitHub 会检测到源代码分支的新修改,并自动更新相应的拉取请求。以下是更新远程分支的工作流程示例:

$ git add
$ git commit -m ""
$ git push origin awesome_feature

 

当拉取请求已处理所有的评论和问题后,审核人会回复LGTM(“Look Good To Me”,看起来不错)并批准你的拉取请求。在至少得到一次批准后,维护者(maintainer)会将你的拉取请求合并到Alluxio代码库中。

祝贺你!你已经成功地为Alluxio项目做出贡献! 感谢加入我们的社区!

下一步

Alluxio有不同难度的任务。我们强烈建议新手贡献者在承担更高级别的任务之前先完成两个新手贡献者任务。这些新手任务很容易解决,不需要对Alluxio代码非常熟悉,可以帮你熟悉社区贡献的整个流程。

除了这些新手贡献者任务外,我们还有其他不同级别的任务:

期待着新的贡献者们加入我们Alluxio社区,也欢迎大家加入我的开源小课堂,助力大家更快速地学习成长!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注