前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >备忘下:如何给chromium提交patch

备忘下:如何给chromium提交patch

作者头像
龙泉寺扫地僧
发布2019-02-20 11:08:45
1.2K0
发布2019-02-20 11:08:45
举报
文章被收录于专栏:盟主来了盟主来了

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 因为工作的原因,需要给chromium提些patch,搞了很久才搞定,记录一下。

其实提patch本身是比较简单的,但关键是国内坑爹的墙,让我耽误很久。

最后亲自跑到国外去提才搞定····

大家可以在https://cs.chromium.org/chromium/src/AUTHORS看到我的id

debugwang,哈哈,id是不是很拉风……

整个过程参考http://www.chromium.org/developers/contributing-code

首先,你需要把整个chromium包括git的历史记录都拉取下来。

先下载他的depot_tools, 丢到一个英文路径,注意路径别有空格。然后把路径加到path系统变量的最前面 , 这个比较关键。

然后fetch chromium就可以直接下载了。但这步是最坑爹的,因为墙的存在,必须得上V**。但git是不能断点续传的!我拉了N次,每次都在快下好的是断掉了。最后实在没办法了,刚好有机会去泰国旅游。就把笔记本带上,在酒店里通宵开着下。没想到居然成功了,当场差点泪流满面……

chromium的patch分成修复bug和实现features。我第一次提,肯定不敢提太多东西。就找了些bug来提。所以首先你得到https://code.google.com/p/chromium/issues/list 去找找,你的bug有没在最新版上修复。如果没有的话,在上面提出issue。然后等他们回复。

同时你还得在上面和他们讨论,并确保你的issue能让他们的测试人员重现。否则不会给你立issue。

一旦issue被确认,Chromium的测试人员会将issue的状态置为Assigned。如果你有解决方案,需要先和你需要提patch的文件的owner沟通,确认你的解决思路可行。同时,将你的patch作为附件贴到issue讨论串中,owner会去看。

如果Owner接受你的解决思路,就可以开始提patch了。

如果你是第一次提交代码,要去签署CLA:https://developers.google.com/open-source/cla/individual。我用的是公司的CLA,这步省略了。签署时,要用和你的google账户一致的邮箱地址。

然后开始在git上操作。

首先checkout一个分支。假如你需要修复bug1,则在chromium根目录下执行

git checkout -b bug1 origin/master

然后

git commit -a

然后会弹出一个记事本,写入日志。chromium对日志格式有严格要求,如下:

标题 (空行) 正文 (空行) BUG=(issue的编号) R=(owner的邮箱)

如果你修的不是bug,比如是简单改些不良编程习惯,倒数第二行可以写BUG=nobug

如果你是第一次提交patch,你需要同时修改根目录下的AUTHORS文件。

然后再运行

git cl upload --send-mail

命令。这个cl不是一般的git的东西,是depot_tools里的git的。

执行完这句,就会把你的修改提交到Chromium强大的reviewer系统:Rietveld。

执行这句的时候,cl会检查是否有warning。有的话是通不过的。同时还会打开google的一个网页,然后用你的邮箱去登录。

CL成功后你将会在 https://codereview.chromium.org/all?limit=20&closed=0&offset=0 看到你的Outgoing reviews一项有了新的条目,然后就是等待reviewer们反馈。

然后根据reviewer的回复继续修改你的patch。

代码的修改必须在你先前建立的分支上。每次修改完并提交后,运行“git cl upload”重新提交patch。

然后reviewer会回复"LGTM" (Looks Good To Me)。注意需要评论的reviewer们作为OWNER覆盖所有修改的文件。

此时你可以点选Rietveld上对应的issue页面的“commit”项 。你的patch会被提交到CommitQueue,稍后Rietveld会运行大量trybot验证你的修改没有引入新的问题。

成功提交后,你的名字就会出现在

http://src.chromium.org/svn/trunk/src/AUTHORS

 提交完成后,你可以git checkout origin/master回去,然后git pull origin master更新下代码。这是因为chromium的更新非常频繁。你下次提的时候肯定很多代码又变了。 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年10月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档