一、概述
要使用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”按鈕,點擊這個按鈕,我們就可以將這筆提交到代碼庫裏面