记一次向 flutter 提交代码

作为一名休闲级的业余玩家,昨天为 flutter engine 源码贡献了一个字母,荣幸之至。

虽然贡献的本身没有什么太大的价值。但对于我个人来说,却是一种成长。 

在此我把整个流程记录并分享出来,希望当你想要为 flutter 或是别的开源项目贡献代码时,会对你有所帮助。

也感谢 Alex 在整个过程中对我的帮助。

1.发现问题并确认问题

当我在测试 canvas.drawAtlas 方法时,查看上方的注释,有一个示例代码。 

看到下面箭头所示的地方,心中暗喜 : it's a chance!

虽然当时比较激动,但还是默念一声: 莫慌 。flutter 的更新迭代比较快,可能在 master 分支已经被修改了。所以需要到 github 中查看 master 分支目前的代码。那怎么知道这个文件在哪呢?  

可以看到当前文件磁盘位置在: flutter/bin/cache/pkg/sky_engine/lib/ui/painting.dart

  • 找到painting.dart文件在flutter/engine项目中

  • 确认错误仍在:

2.在 flutter 中提交 issue

flutter/engine 不能提交 issue,都集中在 flutter/flutter 项目下。

New issue 时会让你选择类型,根据情况选择。写的时候使用英语,尽量将问题描述清楚。

3. Fork 需要修改的项目

将该项目Fork到自己的仓库里。

  • 这样项目将会在你的仓库中出现

4. 新建分支并修改

注意: 你需要新建一个分支来进行源码的修改

你可以将项目clone下来,新建分支。这里比较简单,直接点 master 然后搜索分支。 

github  界面是没有新建分支的按钮,你可以 输入一个不存在的分支 ,然后下面会有创建栏

  • 然后直接修改相应的位置

  • 可以写下描述并提交变动

5.Pull requests

【1】创建 Pull requests

image-20201030092330895

【2】页面会跳到 flutter/engine,注意将右侧分支选为新建的分支

【3】写清楚标题,和描述信息。把解决的相关issue链接加上

【4】在 flutter/engine 你可以看到你的Pr

6. 关于CAL问题

我是第一次Pr,界面上面显示 CLA 的问题。关于CLA,这里不多说,这里有篇文章可以参考 什么是CLA?。 简单来说CAL是一种对贡献者和开源项目的使用者的保护 。下面看一下如何 签署CLA

出现CLA 的问题,在 Pr 下面会有 googlebot 的评论。里面会为你介绍CLA,下面的第一个链接是 签署CLA 的网址。 不过你需要科学上网

过程很简单,就是输入 用户名gitHub账号名邮箱即可

记得最后需要在Pr的界面回复一下: @googlebot I singed it!

7. 等待Pr的结果

然后要做的就是等待 Pr 结果,然后会 在master 分支看到自己的头像,打完收工。

最后,可以看到 flutter/engine 代码 被修改了。虽然只是一行而已,虽然只是注释而已,虽然只是一个字母而已。不过在源码里,有个用自己的手敲出来的字,感觉很不错。

整体的流程大概就是这样,虽然都是在github界面上操作的,你也可以对应到相关的 git 命令。 

通过这次经历的分享,希望大家也可以加入到开源项目的维护中。流程也不是想象中的那么复杂。