2011年10月7日 星期五

替 Webkit 送 Patch

Webkit Bugzilla
Webkit Bugzilla:https://bugs.webkit.org/


幾個月前收到一個任務,要替 Webkit 送幾個 patch,當下覺得很興奮,但是時間不夠用,拖了幾個月後,我才正是嘗試。目前我只做了一個簡單的部分,替某個 patch 建立正確的 test cases,這部分不需要寫程式的。現在就先把這些過程筆記一下,或許哪天也可以學 J大神用 commit log 來介紹自己了(誤)


首先,想要替 Webkit 貢獻者,必須先確認該功能還沒被實作或是有某些 bugs,例如 HTML5 眾多的 CSS3 功能等,另外則是在 Webkit Bugzilla 搜尋一下。關於某個未實作的功能,最好的驗證方式是去查看目前 webkit svn 裡頭的 LayoutTests 的東西,這邊 Webkit 可是分成非常多的 platform 的,光 chromium 就還可以分 win/linux/mac 等版本。


http://trac.webkit.org/browser/trunk/LayoutTests/platform/


接著就照 Webkit 官網的介紹,去取得程式碼、安裝開發環境,最後再把它編譯起來。如此一來,至少完成編譯的動作,接著才進入開發階段。


開發完成時,一樣編譯好,可以透過自製或是上述 LayoutTests 的測資


測資來源:http://trac.webkit.org/browser/trunk/LayoutTests 


測資結果(win):http://trac.webkit.org/browser/trunk/LayoutTests/platform/win


當功能一切完善後,就可以到 Webkit Bugzilla 貢獻程式,甚至自己發佈新問題或需求,接著自己再解掉。


在上傳 patch 之前,是必須通過 Webkit framework 的驗證,驗證方式可透過 WebKit/Tools/Scripts/run-webkit-tests 查看更改的程式是否能通過 test cases:


驗證 LayoutTests/folder1/folder2 裡的測資


$ ./Tools/Scripts/run-webkit-tests -v folder1/folder2


建立 pixel results ,有網頁可以查看兩者在瀏覽器顯示的樣貌


$ ./Tools/Scripts/run-webkit-tests -v -p folder1/folder2


如果原先的 test cases 本來就不對了,那這時候就是把你產出的測資拿去覆蓋掉原本即可。


當工作一切完善後,接著才正式進入送 patch 階段,在送出 patch 前,須產生 Changelog 筆記一下,接著驗證自己產生的東西是否符合 Webkit coding style:


$ cd Webkit
$ ./Tools/Scripts/prepare-ChangeLog --name "Your Name" --email "Your Email Address"
  Running status to find changed, added, or removed files.
  Reviewing diff to determine which lines changed.
  Extracting affected function names from source files.
  Change author: Your Name <Your Email Address>.
  Running 'svn update' to update ChangeLog files.
    At revision xxxxx.
    At revision xxxxx.
  Editing the Source/folder/ChangeLog file.
  Editing the LayoutTests/ChangeLog file.
-- Please remember to include a detailed description in your ChangeLog entry. --

-- See <http://webkit.org/coding/contributing.html> for more info --


編寫完 ChangeLog 後,再用 check-webkit-style 驗證(包括ChangeLog):


$ cd Webkit
$ ./Tools/Scripts/check-webkit-style
...
Total erros found: 0 in # files


一切都備妥後,就可以正式在 Webkit Bugzilla 上傳 patch 了,上傳時會有表單要填寫:


patch_bugzilla


首先是上傳的檔案不能超過 2MB,不然就要切開成多個 patch 或是給一個 url 讓它測;接著給上簡短一句話的描述;最後,則是 Flags 要設定,若要被人審核,那 review 那邊要標 ? ,而希望通過 review 後可以自動進入 trunk ,那就要用 ? 標記 commit-queue 囉。可以用滑鼠移到下拉式選單,將有提示字句可以再多多了解。


最後,就是等待審核者來處理及相互互動囉,順利的話,就可以完成貢獻啦。


沒有留言:

張貼留言