记一次向 flutter 提交代码的经历

5,181 阅读4分钟

作为一名休闲级的业余玩家,昨天为 flutter engine 源码贡献了一个字母,荣幸之至。
虽然贡献的本身没有什么太大的价值。但对于我个人来说,却是一种成长。
在此我把整个流程记录并分享出来,希望当你想要为 flutter 或是别的开源项目贡献代码时,会对你有所帮助。 也感谢 Alex 在整个过程中对我的帮助。

1.发现问题并确认问题

当我在测试canvas.drawAtlas方法时,查看上方的注释,有一个示例代码。
看到下面箭头所示的地方,心中暗喜 :it's a chance!

image-20201030072835662

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

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

image-20201030074149611

  • 确认错误仍在:

image-20201030074149611


2.在 flutter 中提交 issue

flutter/engine 不能提交 issue,都集中在 flutter/flutter 项目下。
New issue时会让你选择类型,根据情况选择。写的时候使用英语,尽量将问题描述清楚。

image-20201030074953304


3. Fork 需要修改的项目

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

image-20201030075341921

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

image-20201030075549674


4. 新建分支并修改

注意: 你需要新建一个分支来进行源码的修改
你可以将项目clone下来,新建分支。这里比较简单,直接点master 然后搜索分支。
github 界面是没有新建分支的按钮,你可以输入一个不存在的分支,然后下面会有创建栏

image-20201030090540858

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

image-20201030091626453

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

image-20201030091910980


5.Pull requests

【1】创建 Pull requests

image-20201030092330895

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

image-20201030092559609

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

image-20201030093505061

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

image-20201030093717198


6. 关于CAL问题

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

image-20201030094211732

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

image-20201030094608146

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

image-20201030095311028

image-20201030095031020

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

image-20201030095454512


7. 等待Pr的结果

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

image-20201030095633480 70861604011331_.pic_hd

最后,可以看到 flutter/engine 代码 被修改了。虽然只是一行而已,虽然只是注释而已,虽然只是一个字母而已。 不过在源码里,有个用自己的手敲出来的字,感觉很不错。
整体的流程大概就是这样,虽然都是在github界面上操作的,你也可以对应到相关的 git 命令。
通过这次经历的分享,希望大家也可以加入到开源项目的维护中。流程也不是想象中的那么复杂。

image-20201030064051007

@张风捷特烈 - 2020.10.30
公众号:编程之王
~ END ~