Android 程式碼開發工作流
一、概述
要使用Android程式碼,您需要使用Git和Repo。在大多數情況下,您可以使用Git而不是Repo,或者使用Repo和Git命令來形成複雜的命令。然而,使用Repo進行基本的跨網路操作將使您的工作更簡單。
Git是一個開源版本控制系統,旨在處理分佈在多個儲存庫中的大型專案。在Android中,我們使用Git進行本地操作,如本地分支,提交,差異和編輯。
Repo是在Git之上構建的儲存庫管理工具。 Repo在必要時統一了許多Git儲存庫,上傳到版本控制系統,並自動部署了Android開發工作流程。 Repo並不意味著取代Git,只是為了在Android的中更容易使用Git。 repo命令是可執行的Python指令碼,您可以將其放在路徑的任何位置。在使用Android原始檔時,您將使用
Repo進行跨網路操作。例如,使用單個Repo命令,您可以將檔案從多個儲存庫下載到本地工作目錄。
Gerrit是使用git的專案的基於Web的程式碼審查系統。 Gerrit鼓勵更多的集中使用Git,它允許所有授權使用者提交更改,如果通過程式碼審查,這些更改將自動合併。此外,Gerrit通過在瀏覽器中並排顯示更改並啟用內聯註釋來更輕鬆地進行審閱。
二、基本工作流
在android裡,開發與程式碼庫常用的互動模式如下:
- 下載程式碼
- 編輯檔案,提交修改
- 提交修改到gerrit
- Gerrit觸發Jenkins 任務,進行程式碼檢查
- Reviewer 對程式碼進行Code review
- Submit到程式碼庫
三、下載程式碼
要同步所有可用專案的檔案:
$ repo sync
要同步所選專案的檔案:
$ repo sync PROJECT0 PROJECT1 PROJECT2 . . .
四、編輯檔案,提交修改
按照需求修改好檔案之後,使用如下命令可以先暫存你的修改。
git add -A
然後使用git commit 將暫存的檔案提交。
五、提交修改到gerrit
在提交到gerrit之前,現將原生代碼更新到最新
repo sync
這個時候,可能會出現程式碼衝突。需要對產生衝突的檔案進行修改,然後重新git add .和git commit 最後在執行
git rebase --continue
然後執行
repo upload
這將列出您提交的更改,並提示您選擇要上傳到gerrit上的分支。如果只有一個分支,您將看到一個簡單的y / n提示符。
下圖是程式碼在本地通過git和repo的操作圖表。
六、Gerrit觸發Jenkins 任務,進行程式碼檢查
當修改提交到gerrit上之後,會自動觸發jenkins 任務,進行程式碼檢查。這時我們進行程式碼審查的第一步。
根據我們制定的程式碼檢查規範,檢查當前的這筆提交是否滿足我們的需要。
如果沒有通過程式碼檢查,會對這筆提交進行 vertify -1;通過的話,會進行vertify +1。
程式碼檢查這一步,是後面reviewer進行程式碼審查的一個重要依據。沒有通過的話,開發一定要重新修改程式碼進行提交。
而且,程式碼檢查的通過率,也是評價這個開發程式碼質量的一個重要標準。
七、Reviewer 對程式碼進行Code review
程式碼在提交到gerrit上之後,除了進行jenkins的程式碼稽核之外,還會給各個負責人(Reviewer)傳送稽核邀請,由他們進行下一步的程式碼稽核。
Reviewer評審的依據:
- Jenkins job進行程式碼檢查的結果;
- 程式碼設計是否合理;
- 是否滿足需求;
- 是否可以解決已有的問題;
……
Reviewer可以在程式碼新增comments,發表自己的建議、質疑、修改意見……
開發要回復這些comment,並對程式碼進行適當的修改,重新提交,直到reviewer認為你的修改滿足要求,並給你Code Review +1或+2.
而如果一筆提交長時間沒有任何改動,會自動abandon掉,而不需要的修改,也可以手動abandon掉。
八、Submit到程式碼庫
當一筆提交已經被Code Review +2了,說明這筆提交已經滿足了需要,這時該筆提交的gerrit介面上會出現“submit”按鈕,點選這個按鈕,我們就可以將這筆提交到程式碼庫裡面