想像一下:
能否讓創建代碼評審就像執行
git push
命令一樣的簡單?開發者不用切換工具,將原來需要幾分鐘才能完成的創建代碼評審的時間,縮短到幾秒鐘,是不是很酷?
采用 AGit-Flow 模式,借助 git-repo工具,它為 Git 插上了翅膀。
什么是 AGit-Flow ?
如何將 GitHub 和 Gerrit 兩種工作流結合到一起并且兼具他們的優點?在 Gerrit 的啟發下,我們在 CGit 的基礎上創建了一個集中式 Git 工作流,我們稱之為 “AGit-Flow”。
使用 AGit-Flow 工作流,無需創建派生倉庫,也無需在倉庫中創建特性分支,只讀用戶就可以通過git push
命令創建代碼評審。
為此,我們開發了配套的命令行工具 “git-repo”,既能在單倉庫下工作,又支持類似 Android 的多倉庫項目協同。
AGit-Flow 工作流
單倉庫下 AGit-Flow 工作流如下圖所示:
圖中的兩個角色,一個是開發者,另外一個是評審者。
開發者通過如下操作,創建和更新 pull request:
開發者克隆倉庫。
本地倉庫內開發,創建提交。
工作區中執行
git pr
命令,推送本地提交到服務器。服務器自動創建新的代碼評審(例如:pull request #123)。
開發者根據評審意見,在本地工作區繼續開發,新增或修改提交。
工作區中再次執行
git pr
命令,推送本地提交到服務器。服務器發現目標分支上已經存在來自同一用戶、同一本地分支的 pull request,因此用戶此次推送沒有創建新的 pull request,而是更新已經存在的 pull request。
代碼評審者,不但可以給出評審意見,也可以直接發起對評審代碼的修改,更新 pull request:
代碼評審者執行
git download 123
下載編號為 123 的 pull request 到本地倉庫。代碼評審者本地修改代碼后,執行
git pr --change 123
命令,將本地修改推送到服務端。服務端接收到代碼評審者的特殊
git push
命令,更新之前由開發者創建的 pull request。項目管理者通過點擊 pull request 評審界面的合并按鈕,將 pull request 合入 master 分支。master 分支被更新,同時關閉 pull request。
下面是單倉庫下 AGit-Flow 工作流的演示:
多倉庫協同演示參見:https://git-repo.info/zh_cn/docs/multi-repos/overview/
git-repo 工具
git-repo是阿里巴巴開源的一款命令行工具,對原生 Git 命令做了封裝,簡化了使用 AGit-Flow 等集中式工作流時稍嫌繁瑣的 Git 命令。
git-repo 可以支持 AGit-Flow 兼容的代碼平臺以及 Gerrit,下載參見工具下載。