GitLab API:获取与问题关联的分支
GitLab API: Get branch associated with issue
在 GitLab 问题中,您可以将分支与问题相关联,并且在问题中会有行
@whoever
created the branch branchname
to address this issue.
有没有办法使用问题 API 获取该分支?我正在尝试设置一个自动化脚本,它将与具有特定标签的问题相关的所有分支合并到 prod 分支中,然后将结果作为开发分支推送,以便我可以将其部署到开发环境中。我不想使用合并请求,因为它们将在开发工作完成并准备好合并以部署到生产时使用。
不幸的是,目前没有官方API来获取问题的相关分支。
解决此问题的一些可行方法:
使用注释API
当用户使用问题界面创建分支时,您会看到一条系统消息,就像您提到的那样。此消息将出现在问题的 notes
API 中。
使用 python-gitlab
库的示例:
import re
...
branch_note_pattern = '^created branch \[\`(.*)\`\].*to address this issue'
issue = project.issues.get(ISSUE_NUMBER)
all_notes = list(issue.notes.list(as_list=False))
system_notes = [note for note in all_notes if note.system]
related_branches = []
for note in system_notes:
match = re.match(branch_note_pattern, note.body):
if match:
branch = match.groups()[0]
related_branches.append(branch)
print('BRANCHES RELATED TO ISSUE', ISSUE_NUMBER)
for branch_name in related_branches:
print(branch_name)
但是,有可能有一个相关分支没有出现该注释,因为相关分支只是基于命名约定。因此,如果有人只是创建了一个名为 <issue_number>-some-branch-name
的分支,那么它将显示为相关分支,但 API.
中不会有系统消息。
因此,如果您依赖注释 API,您可能会错过手动创建的相关分支。
使用非官方前端API
issues controller only returns related branches为了前端呈现为HTML。
如果您请求 /<:project_url>/-/issues/<:issue_number>/related_branches?format=json
,您将收到一个 JSON 响应,其中包含要在问题视图中插入前端的 HTML。您可以解析此 HTML 以获取相关分支。
这将可靠地获取您将在 UI 中看到的相同相关分支,但需要更多的工作来实现,并且很脆弱,因为不能保证 API 在版本之间保持稳定GitLab 的。
在 GitLab 问题中,您可以将分支与问题相关联,并且在问题中会有行
@whoever
created the branchbranchname
to address this issue.
有没有办法使用问题 API 获取该分支?我正在尝试设置一个自动化脚本,它将与具有特定标签的问题相关的所有分支合并到 prod 分支中,然后将结果作为开发分支推送,以便我可以将其部署到开发环境中。我不想使用合并请求,因为它们将在开发工作完成并准备好合并以部署到生产时使用。
不幸的是,目前没有官方API来获取问题的相关分支。
解决此问题的一些可行方法:
使用注释API
当用户使用问题界面创建分支时,您会看到一条系统消息,就像您提到的那样。此消息将出现在问题的 notes
API 中。
使用 python-gitlab
库的示例:
import re
...
branch_note_pattern = '^created branch \[\`(.*)\`\].*to address this issue'
issue = project.issues.get(ISSUE_NUMBER)
all_notes = list(issue.notes.list(as_list=False))
system_notes = [note for note in all_notes if note.system]
related_branches = []
for note in system_notes:
match = re.match(branch_note_pattern, note.body):
if match:
branch = match.groups()[0]
related_branches.append(branch)
print('BRANCHES RELATED TO ISSUE', ISSUE_NUMBER)
for branch_name in related_branches:
print(branch_name)
但是,有可能有一个相关分支没有出现该注释,因为相关分支只是基于命名约定。因此,如果有人只是创建了一个名为 <issue_number>-some-branch-name
的分支,那么它将显示为相关分支,但 API.
因此,如果您依赖注释 API,您可能会错过手动创建的相关分支。
使用非官方前端API
issues controller only returns related branches为了前端呈现为HTML。
如果您请求 /<:project_url>/-/issues/<:issue_number>/related_branches?format=json
,您将收到一个 JSON 响应,其中包含要在问题视图中插入前端的 HTML。您可以解析此 HTML 以获取相关分支。
这将可靠地获取您将在 UI 中看到的相同相关分支,但需要更多的工作来实现,并且很脆弱,因为不能保证 API 在版本之间保持稳定GitLab 的。