Git設置分支保護實現CodeReview卡點

Git設置分支保護實現CodeReview卡點

From:https://blog.csdn.net/crisschan/article/details/100922668

GIT是一個分佈式版本控制系統的軟件,主要用來控制代碼的版本。所謂分佈式也就是每一個git的客戶端都有一份完成的代碼庫,這樣如果中央服務器出現問題,代碼也會在各個開發者的電腦上有備份。(本文以下內容以GitLab爲例)

GitFlow 模式將代碼和環境對應

[外鏈圖片轉存失敗(img-kccgQ5lw-1568695938834)(https://i.loli.net/2019/09/17/TVxgaeYwQN2rMf9.png)]

GitFlow模式的各分支說明

  • 1) master
    • 主分支 , 產品的功能全部實現後 , 最終在master分支對外發布
    • 該分支爲只讀唯一分支 , 只能從其他分支(release/hotfix)合併 , 不能在此分支修改
    • 另外所有在master分支的推送應該打標籤做記錄,方便追溯
    • 例如release合併到master , 或hotfix合併到master
  • 2) develop
    • 主開發分支 , 基於master分支克隆
    • 包含所有要發佈到下一個release的代碼
    • 該分支爲只讀唯一分支 , 只能從其他分支合併
    • feature功能分支完成 , 合併到develop(不推送)
    • develop拉取release分支 , 提測
    • release/hotfix 分支上線完畢 , 合併到develop並推送
  • 3) feature
    • 功能開發分支 , 基於develop分支克隆 , 主要用於新需求新功能的開發
    • 功能開發完畢後合到develop分支(未正式上線之前不推送到遠程中央倉庫
    • feature分支可同時存在多個 , 用於團隊中多個功能同時開發 , 屬於臨時分支 , 功能完成後可選刪除
  • 4) release
    • 測試分支 , 基於feature分支合併到develop之後 , 從develop分支克隆
    • 主要用於提交給測試人員進行功能測試 , 測試過程中發現的BUG在本分支進行修復 , 修復完成上線後合併到develop/master分支並推送(完成功能) , 打Tag
    • 屬於臨時分支 , 功能上線後可選刪除
  • 5) hotfix
    • 補丁分支 , 基於master分支克隆 , 主要用於對線上的版本進行BUG修復
    • 修復完畢後合併到develop/master分支並推送 , 打Tag
    • 屬於臨時分支 , 補丁修復上線後可選刪除
    • 所有hotfix分支的修改會進入到下一個release

GitFlow 主要的工作流程

代碼倉庫的Owner設置master分支是保護分支,

  • 1) 有新的feature要開發的時候,首先從master拉取第一個develop分支,develop分支名就是dev。
  • 2) 從dev拉取feature分支進行編碼開發(多個開發人員拉取多個feature同時進行並行開發 , 互不影響),feature分支命名規範:feature- XX(XX是一個唯一標示)
  • 3) feature分支完成後 , 合併到dev,合併後擇刪除當前feature。
  • 4) 從dev拉取release分支進行提測 , 提測過程中在release分支上修改BUG,release分支名字是release。
  • 5) release分支上線後 , 合併release分支到dev/master並推送合併之後刪除當前release分支。
  • 6) 上線之後若發現線上BUG , 從master拉取hotfix進行BUG修改。hotfix 分支命名規範:hotfix-XXX(XXX是一個唯一標示)。
  • 7) hotfix通過測試上線後 , 合併hotfix分支到dev/master並推送,合併之後 , 刪除當前hostfix
  • 8) 當進行一個feature時 , 若dev分支有變動 , 如其他開發人員完成功能並上線 , 則需要將完成的功能合併到自己分支上即合併dev到當前feature分支。
  • 9) 當進行一個release分支時 , 若dev分支有變動 , 如其他開發人員完成功能並上線 , 則需要將完成的功能合併到自己分支上即合併dev到當前release分支 (因爲當前release分支通過測試後會發佈到線上 , 如果不合並最新的dev分支 , 就會發生丟代碼的情況)。

Git的分子保護

[外鏈圖片轉存失敗(img-CfzADDYw-1568695938859)(https://i.loli.net/2019/09/17/4wPgvOm72Q9zT8K.png)]

在Git的分支合併過程中支持方式,一種是在本地將source branch 合併到 target branch,然後再切換到target branch後將target branch push到遠端target branch。另外一種是將本地的source branch push到遠端的source branch,然後在gitlab上提交一個將source branch 合併到 target branch的merge request。那麼爲了能夠到達我們強制的CodeReview卡點,我們將master branch(也就是生產發佈分支)、release branch(也就是提測分支)進行保護,不能接受直接的push request,只能通過提交merge request,並有架構師或者技術負責人進行CodeReview通過後,完成Merge。那麼如何完成Git的分支保護呢?

首先進入對應的代碼倉,然後點擊Settings下的Repository Settings選擇Protected Branches選項

[外鏈圖片轉存失敗(img-VgWWlWh1-1568695938870)(https://i.loli.net/2019/09/17/WtGv1JycYg6PRxo.png)]

選擇對應的分支分別作如下設置:

限制了develop分支,develop分支、release分支、以及master分支只能通過merge request的方式合併,不可以直接的push代碼,同時設置了需要Master進行合併的請求的code review後點擊完成後完成合並。(這裏面的Master就是開發架構師或者技術負責人等角色)

提交一個Merge Request

點擊merge requst菜單,然後新建一個merge request

[外鏈圖片轉存失敗(img-8ny2Y1VP-1568695938875)(https://i.loli.net/2019/09/17/jWgx1k4VF89UqQt.png)]

然後選擇對應的source branch和target branch後,點擊下一步:

[外鏈圖片轉存失敗(img-sjlwYYtQ-1568695938880)(https://i.loli.net/2019/09/17/caKZCW52pLyX8kr.png)]

進入後輸入相關內容後,點擊提交合並請求:

[外鏈圖片轉存失敗(img-nIi7WDl1-1568695938881)(https://i.loli.net/2019/09/17/Jr698w4GeMaXysZ.png)]

[外鏈圖片轉存失敗(img-81SfDzqW-1568695938887)(https://i.loli.net/2019/09/17/PHUiSv247zWuNJR.png)]

其中(出去如下部分以外都選擇默認值或者爲空):

操作項 說明
Title 標題
Description 描述寫清具體包含的feature
Assignee 分配到的人必須爲項目內的技術負責人或者架構師
Milestone no milestone
Label no label

完成後,就等待code review過後等待反饋意見。通過後就可以完成合並了。

IDE:Intelj的codereview插件

1、GitLab Access Token菜單:User Settings->Access Tokens 進入Access Token添加頁面

Name 名稱,根據自己喜好來即可Expires at 過期時間,最遠可以選擇到10年後,根據自己需要填寫即可Scopes 範圍,這裏選擇api就夠用了創建完成後,麻煩暫時保存token。因爲一旦刷新或者重開頁面,token就不可見了。

2、IntelliJ IDEA GitLab插件使用安裝以下兩個插件即可:

Gitlab Projects:https://plugins.jetbrains.com/plugin/7975-gitlab-projectsGitlab Integration:https://plugins.jetbrains.com/plugin/7319-gitlab-integration

3、Visual StudioVisual Studio GitLab插件:https://marketplace.visualstudio.com/items?itemName=MysticBoy.GitLabExtensionforVisualStudio

4、Visual Studio CodeVisual Studio Code GitLab插件:https://marketplace.visualstudio.com/items?itemName=jasonn-porch.gitlab-mr

5、AtomAtom GitLab 插件:https://atom.io/packages/gitlab

關注我,關注測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章