1. 程式人生 > >備忘下:如何給chromium提交patch

備忘下:如何給chromium提交patch

著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

因為工作的原因,需要給chromium提些patch,搞了很久才搞定,記錄一下。

其實提patch本身是比較簡單的,但關鍵是國內坑爹的牆,讓我耽誤很久。

最後親自跑到國外去提才搞定····


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

首先,你需要把整個chromium包括git的歷史記錄都拉取下來。

先下載他的depot_tools, 丟到一個英文路徑,注意路徑別有空格。然後把路徑加到path系統變數的最前面 , 這個比較關鍵。

然後fetch chromium就可以直接下載了。但這步是最坑爹的,因為牆的存在,必須得上VPN。但git是不能斷點續傳的!我拉了N次,每次都在快下好的是斷掉了。最後實在沒辦法了,剛好有機會去泰國旅遊。就把筆記本帶上,在酒店裡通宵開著下。沒想到居然成功了,當場差點淚流滿面……

chromium的patch分成修復bug和實現features。我第一次提,肯定不敢提太多東西。就找了些bug來提。所以首先你得到code.google.com/p/chrom 去找找,你的bug有沒在最新版上修復。如果沒有的話,在上面提出issue。然後等他們回覆。

同時你還得在上面和他們討論,並確保你的issue能讓他們的測試人員重現。否則不會給你立issue。

一旦issue被確認,Chromium的測試人員會將issue的狀態置為Assigned。如果你有解決方案,需要先和你需要提patch的檔案的owner溝通,確認你的解決思路可行。同時,將你的patch作為附件貼到issue討論串中,owner會去看。

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

然後開始在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的一個網頁,然後用你的郵箱去登入。


然後根據reviewer的回覆繼續修改你的patch。

程式碼的修改必須在你先前建立的分支上。每次修改完並提交後,執行“git cl upload”重新提交patch。

然後reviewer會回覆"LGTM" (Looks Good To Me)。注意需要評論的reviewer們作為OWNER覆蓋所有修改的檔案。

此時你可以點選Rietveld上對應的issue頁面的“commit”項 。你的patch會被提交到CommitQueue,稍後Rietveld會執行大量trybot驗證你的修改沒有引入新的問題。

成功提交後,你的名字就會出現在

 提交完成後,你可以git checkout origin/master回去,然後git pull origin master更新下程式碼。這是因為chromium的更新非常頻繁。你下次提的時候肯定很多程式碼又變了。