有没有办法通过是否有相关的合并请求来过滤 GitLab 中的问题?
Is there a way to filter issues in GitLab by whether or not they have a related merge request?
我有许多问题分配给我处理,我已经提出合并请求来修复其中的许多问题。我正在寻找一个可以让我过滤掉相关合并请求问题的查询。
我使用的 GitLab 实例是 v14.4.2。
我已经查看了这两个 basic search and advanced search 的文档,但找不到合适的查询。
GitHub 中的等效查询将是 is:issue is:open assignee:legowerewolf -linked:pr
在撰写本文时,这是不可能的。
一般来说,如果文档中没有列出一个功能,那么它就没有被实现。您可以在 GitLab issue tracker 中搜索现有功能请求(虽然我没有找到)或提交功能请求。
根据上面的@Arty-chan,没有 built-in 方法可以做到这一点。在 PowerShell 和 API 中摸索了一下之后,我想到了这个:
$GitlabToken = '[your GitLab PAT with API read access]'
$APIRoot = 'https://[your GitLab server here]/api/v4'
$TokenHeader = @{
"PRIVATE-TOKEN" = $GitlabToken
}
$User = Invoke-RestMethod -Method Get -Uri "$APIRoot/user" -Headers $TokenHeader
$UserOpenIssues = Invoke-RestMethod -Method Get -Uri "$APIRoot/issues" -Headers $TokenHeader -Body @{
assignee_id = $User.id
state = "opened"
scope = "all"
}
foreach ($Issue in $UserOpenIssues) {
$Issue | Add-Member -MemberType NoteProperty -Name "related_merge_requests" -Value (
Invoke-RestMethod -Method Get -Uri "$APIRoot/projects/$($Issue.project_id)/issues/$($Issue.iid)/related_merge_requests" -Headers $TokenHeader | Where-Object { $_.state -eq "opened" }
)
}
$UserOpenIssues = $UserOpenIssues | Sort-Object -Property @{Expression = { $_.labels[0] } }
Write-Host "Open issues without a merge request assigned to $($User.name):"
$UserOpenIssues
| Where-Object { $_.related_merge_requests.Count -eq 0 }
| Format-Table -Property @(
@{name = "Reference"; expression = { $_.references.full } }
@{name = "Title"; expression = { $_.title } }
@{name = "Labels"; expression = { $_.labels } }
)
我有许多问题分配给我处理,我已经提出合并请求来修复其中的许多问题。我正在寻找一个可以让我过滤掉相关合并请求问题的查询。
我使用的 GitLab 实例是 v14.4.2。
我已经查看了这两个 basic search and advanced search 的文档,但找不到合适的查询。
GitHub 中的等效查询将是 is:issue is:open assignee:legowerewolf -linked:pr
在撰写本文时,这是不可能的。
一般来说,如果文档中没有列出一个功能,那么它就没有被实现。您可以在 GitLab issue tracker 中搜索现有功能请求(虽然我没有找到)或提交功能请求。
根据上面的@Arty-chan,没有 built-in 方法可以做到这一点。在 PowerShell 和 API 中摸索了一下之后,我想到了这个:
$GitlabToken = '[your GitLab PAT with API read access]'
$APIRoot = 'https://[your GitLab server here]/api/v4'
$TokenHeader = @{
"PRIVATE-TOKEN" = $GitlabToken
}
$User = Invoke-RestMethod -Method Get -Uri "$APIRoot/user" -Headers $TokenHeader
$UserOpenIssues = Invoke-RestMethod -Method Get -Uri "$APIRoot/issues" -Headers $TokenHeader -Body @{
assignee_id = $User.id
state = "opened"
scope = "all"
}
foreach ($Issue in $UserOpenIssues) {
$Issue | Add-Member -MemberType NoteProperty -Name "related_merge_requests" -Value (
Invoke-RestMethod -Method Get -Uri "$APIRoot/projects/$($Issue.project_id)/issues/$($Issue.iid)/related_merge_requests" -Headers $TokenHeader | Where-Object { $_.state -eq "opened" }
)
}
$UserOpenIssues = $UserOpenIssues | Sort-Object -Property @{Expression = { $_.labels[0] } }
Write-Host "Open issues without a merge request assigned to $($User.name):"
$UserOpenIssues
| Where-Object { $_.related_merge_requests.Count -eq 0 }
| Format-Table -Property @(
@{name = "Reference"; expression = { $_.references.full } }
@{name = "Title"; expression = { $_.title } }
@{name = "Labels"; expression = { $_.labels } }
)