备忘下:如何给chromium提交patch

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 因为工作的原因,需要给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就可以直接下载了。但这步是最坑爹的,因为墙的存在,必须得上VPN。但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的更新非常频繁。你下次提的时候肯定很多代码又变了。 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券