拯救狗屎代碼:基於 Gitlab 的代碼審查,簡單實用


作者:劉凱_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最全面試題及答案。

推薦去我的博客閱讀更多:

1.Java JVM、集合、多線程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架構、阿里巴巴等大廠最新面試題

覺得不錯,別忘了點贊+轉發哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM