记一次向 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

【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 命令。
通过这次经历的分享,希望大家也可以加入到开源项目的维护中。流程也不是想象中的那么复杂。
