在gitlab中進行代碼審核是一個非常重要的環節,其中merge request(mr)是一種非常重要的方式。當代碼編輯器在gitlab上提交一個mr后,你可以在mr頁面進行討論和變更請求。
在討論MR時,了解MR中修改的文件列表可以幫助更好的理解和評估開發人員所作的更改。本文將向你介紹如何在GitLab中獲取一次MR修改的文件列表。
方法一:通過命令行獲取
首先,你需要在本地上克隆repo。
接下來,我們需要安裝GitLab的API。你可以通過以下方式使用pip進行安裝:
pip install python-gitlab
安裝完成后,我們需要獲得repo的ID和私有token。你可以通過訪問repo主頁 –> 點擊右上角的三個點 –> 訪問”Settings” –> 訪問”Access Token”來獲取私有token。
獲取到私有token后,你需要設置GitLab API所需的環境變量:
export GITLAB_private_TOKEN=<your_access_token> export GITLAB_URL=https://<your_gitlab_server>/api/v4
現在,我們可以使用以下命令獲取MR中的修改文件:
gl = gitlab.Gitlab(os.environ['GITLAB_URL'], private_token=os.environ['GITLAB_PRIVATE_TOKEN']) project = gl.projects.get(<project_id>) merge = project.merge_requests.get(<merge_request_id>) changes = merge.changes() files = changes.get('changes') for file in files: print(file['new_file']['path'])
你可以將代碼片段中的
方法二:通過GitLab API獲取
首先,你需要獲取到repo的ID和私有token,這個過程請參考方法一。
下面,我們將向你介紹如何使用GitLab API來獲取MR中的修改文件。
我們可以發送以下請求(請替換
GET https://<your_gitlab_server>/api/v4/projects/<project_id>/merge_requests/<merge_request_id>/changes
響應將如下所示:
{ "changes": [ { "old_path": "Old file path", "new_path": "New file path" }, ... ] }
我們可以在代碼中使用以下Python代碼來解析響應并獲取文件列表:
import os import requests url = f"https://<your_gitlab_server>/api/v4/projects/<project_id>/merge_requests/<merge_request_id>/changes" response = requests.get(url, headers={"PRIVATE-TOKEN": "<your_access_token>"}) changes = response.json()["changes"] for change in changes: print(change["new_path"])
你可以根據你的需求修改輸出文件列表的代碼。
總結
在本文中,我們向你介紹了如何通過命令行和GitLab API來獲取一次MR修改的文件列表。根據你的需要,你可以選擇任何一種方法。無論選擇哪種方法,都可以幫助你更好的理解代碼審核中的變更。