通过GITLAB API文档,我可以获取合并请求的详细信息, 从中可以获取源项目和分支。
获取分支的提交列表的api,可以列出该分支中的所有提交记录。
是否有一种方法可以通过API获取特定于合并请求的提交列表?
目标是仅了解合并请求中的新提交记录。
谢谢。
curl --header "PRIVATE-TOKEN: ****" "http://gitlab/api/v3/projects/:project_id:/merge_requests/:mr_id:/commits"
https://docs.gitlab.com/ce/api/merge_requests.html#get-single-mr-commits
gl = gitlab.Gitlab('https://xxx.xxx.com', private_token='xxx',api_version=4,ssl_verify=True)
gl.auth()
project = gl.projects.get(1233,lazy=True)
此外,类似以下的内容
def isValidfile(filepath):
_, extension = os.path.splitext(filepath)
if extension in ['.java','.go']: # lets do .ts later
#print(filepath)
return True
return False
def get_commit_diff(project, commit_hash):
commit = project.commits.get(commit_hash)
diffs =[]
for val in commit.diff(get_all=True):
if isValidfile(val['new_path']):
diffs.append(val)
#print(val)
#print(diffs)
return diffs
def getAllDiffs(project,mr_iid):
mr = project.mergerequests.get(mr_iid)
diffs = mr.diffs.list()
vals = []
for diff in diffs:
commit =diff.attributes['head_commit_sha']
vals.append(get_commit_diff(project,commit))
return vals
def get_all_merge_requests(project):
all_mrs = []
page = 1
while True:
mrs = project.mergerequests.list(state='merged', target_branch="master", page=page, per_page=10)
if not mrs:
break
all_mrs += mrs
page += 1
for mr in all_mrs:
print("-------------------------------------------")
print(mr.iid)
print(mr.sha)
print(mr.description)
print(len(getAllDiffs(project,mr.iid)))
print("-------------------------------------------")
break
return all_mrs
更多细节请参见https://python-gitlab.readthedocs.io/en/stable/gl_objects/merge_requests.html