作者:劉凱_7013
https://www.jianshu.com/p/5d764b52ea88
code review 的目的是提高代碼質量,減少開發bug,俗話說,三人行必有我師,眾人拾柴火焰高。
gitlab提供了code review機制,對基於gitlab的code review,直接以具體例子的形式做個實踐總結。
gitlab提供了兩種代碼merge機制:
1)在本地將源分支(Source branch)代碼合並到目標分支(Target branch),然后Push到目標分支(Target branch)
2)將源分支(Source branch)Push到遠端,然后在GitLab指定目標分支(Target branch)發起Merge Request,對目標分支(Target branch)擁有merge權限的用戶執行Merge操作,完成合並。
這兩種方式僅有第2種適合code review,所以我們要做的事情是設置權限,拒絕本地merge后push到遠端的操作。
在第2種方式中 發起merge request后,由有merge權限用戶做code review,通過后執行merge操作。
具體操作如正文
一,分支設置
第一步,創建項目和分支。
分支結構和功能依據具體團隊的規范來定,這里僅供參考。
推薦閱讀:大廠 Git 提交規范是怎么做的?
關注微信公眾號:Java技術棧,在后台回復:git,可以獲取我整理的 N 篇最新 Git 教程,都是干貨。
創建項目並創建分支如下
其中 release為預發布分支,develop為測試分支,develop-1為開發分支。
release,develop,master都是固定的分支,有固定的功能。
本例中假設流程開發如下:
1. 每次需要新feature時,從master拉取開發分支,比如develop-1。
2. master有更新及時合並到develop-1,develop,以及release。
3. develop-1開發完成后合並到develop,部署測試環境。
4. develop環境測試通過后,合並develop-1代碼到release環境,做預發布測試。
5. release環境測試通過后,將develop-1代碼合並到master,上線。
第二步,設置分支merge權限
這一步的是實現code review的關鍵,也就是控制分支的merge 權限。之后只有有merge權限的責任人才能submit merge請求,沒有merge權限的只能提交merge請求,等待有權限的review后submit,則合並成功
具體設置位置:
項目首頁→Settings->Repository→Protected Branches
將master,develop,release三個分支設置成只允許maintainers merge,不允許任何人push,也即在杜絕了上文說的從本地merge,push到遠端的情況
二、具體操作
這里描述從代碼修改,提交,發起merge請求,到code review后merge submit的整體流程。
第一步 開發分支代碼修改,提交,push到遠端
feature的開發分支不做具體的保護設置,即開發人員可以修改后,add,commit,push origin,這里不做詳細講解,push之后,可以在分支頁面看到相應commit日志。如下。
第二步 create merge request
注意上圖右上角有一個按鈕,create merge request,發起merge請求后,進到頁面。
選擇source branch 和Target branch,這里我選擇的是develop-1到release(假設到了預上線階段),點擊compare branches and continue。
頁面中選擇Assignee,指定reviewer,指定人會受到郵件。下面的approvers以及Approvals required,是批准人和最少批准個數。
填寫Approvals required后,必須經過指定個數以上的人批准才能合並。
點擊submit merge request。進到merge request頁面。
第三步 code review
收到郵件的reviewer通過merge request 頁面可以看到代碼修改記錄,並增加commond,其他人也可以通過commond進行討論。
無問題可以點擊merge通過或者不通過則點擊右下角的close merge request。
第四步 查看所有merge請求
在項目頁面的merge request頁面可以看到所有open狀態,close狀態和merged狀態的merge 請求。
推薦閱讀:Code Review兩年實戰經驗分享。
三、可能遇到的問題
遇到沖突怎么辦
多個分支向一個分支合並代碼等流程中,往往會形成版本沖突。此時,提交merge request后的頁面如下:
我們發現,merge按鈕置灰,同時出現了resolve conflicts以及merge locally的按鈕。點擊resolve conflicts。出現解決沖突的頁面
頁面可以通過use ours指定使用當前分支(發起merge request的源分支)代碼或者use theirs來指定使用目標分支代碼。或者點擊 edit inline直接通過編輯頁面編輯(更通用)。
ok,我們已經處理完沖突,點擊下方submit按鈕。
返回merge request頁面,等待遠端沖突解決完成后,merge按鈕正常。
四、總結。
1. 關於分支設置
以上僅是一個分支設置的示例,我們可以根據團隊風格,和具體問題具體分析。
比如多人同時開發一個需求,可能需要拉取一個feature分支后再根據該feature分支拉取個人開發分支,開發完成后和並feature再合並develop,release,master等
2. code review 流程
總結下code review流程
1)創建好 測試分支,release分支,並配置測試分支,release分支,master分支的merge權限
2)開發分支開發完成后push到遠端,通過頁面提交merge request,指定reviewer和審批人,一般指定reviewer即可。
3)reviewer 通過代碼review,沒有問題,可以點擊merge,完成合並操作。如果有問題,可以發起討論,或者直接關閉merge請求。
code review 流程完成。
關注公眾號Java技術棧回復"面試"獲取我整理的2020最全面試題及答案。
推薦去我的博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
覺得不錯,別忘了點贊+轉發哦!