4

记一次向 flutter 提交代码

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI0NjU3MDA4NQ%3D%3D&%3Bmid=2247484715&%3Bidx=1&%3Bsn=1b8d2a01ce6a1753d25dd1cc64fd6990
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

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

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

1.发现问题并确认问题

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

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

6BfY3yZ.png!mobile

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

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

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

6veqqer.png!mobile
  • 确认错误仍在:

VfiMjaq.png!mobile

2.在 flutter 中提交 issue

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

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

reyIbm6.png!mobile

3. Fork 需要修改的项目

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

2aquQbV.png!mobile
  • 这样项目将会在你的仓库中出现

6NjYjyM.png!mobile

4. 新建分支并修改

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

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

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

QNf2a2i.png!mobile
  • 然后直接修改相应的位置

FfUNBnu.png!mobile
  • 可以写下描述并提交变动

Q7JbEv3.png!mobile

5.Pull requests

【1】创建 Pull requests

FjEnYnU.png!mobile image-20201030092330895

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

fyuMNzJ.png!mobile

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

fayUBf.png!mobile

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

36BniyN.png!mobile

6. 关于CAL问题

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

JZf2Ynq.png!mobile

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

rErEBbZ.png!mobile

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

AfyeYjr.png!mobileieI3Ina.png!mobile

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

UnMjmqZ.png!mobile

7. 等待Pr的结果

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

6ZbeqmZ.png!mobileZ7FvQ3B.png!mobile

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

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

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

JRNN3aJ.png!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK