作者:劉凱_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、后端、架構、阿里巴巴等大廠最新面試題
覺得不錯,別忘了點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/142940.html
標籤:Java
上一篇:JVM類加載機制
