【发布时间】:2021-04-18 21:38:04
【问题描述】:
尝试使用提交 ID 列表检索链接的工作项列表。
发现 this 提交 Azure DevOps REST API,由于下面的 ids 参数注释,它不会返回链接的工作项。
不得与其他参数结合使用。
还有其他 API 可以实现这个目标吗?
【问题讨论】:
标签: azure-devops azure-devops-rest-api
尝试使用提交 ID 列表检索链接的工作项列表。
发现 this 提交 Azure DevOps REST API,由于下面的 ids 参数注释,它不会返回链接的工作项。
不得与其他参数结合使用。
还有其他 API 可以实现这个目标吗?
【问题讨论】:
标签: azure-devops azure-devops-rest-api
如何从提交列表中检索链接的工作项
我们可以使用请求正文中的 includeWorkItems 和 REST API Commits - Get Commits Batch 来获取链接的工作项:
{
"includeWorkItems": "true"
}
但是当commit中没有关联workitem时,返回值为"workItems": [],我们需要过滤掉这样的结果。
请检查我的 powershell 脚本:
$url = "https://dev.azure.com/<YourOrganizationName>/<YourProjectName>/_apis/git/repositories/<RepositoriesId>/commitsbatch?api-version=6.0"
$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$body=@"
{
"includeWorkItems": "true"
}
"@
Write-Host "$url"
$response= Invoke-RestMethod -Uri $url -ContentType "application/json" -Body $body -headers @{authorization = "Basic $base64AuthInfo"} -Method POST
$CommitIDsInfo = $response.value | Where-Object{$_.workitems -ne ""} | select commitid, workitems
$WorkItems = $CommitIDsInfo | ConvertTo-Json -Depth 100
Write-Host $WorkItems
测试结果是:
【讨论】:
您可以通过循环遍历每个提交哈希值来做到这一点。在请求中,对“fromCommitid”和“toCommitid”值使用相同的提交哈希。比如:
{
"includeWorkItems": "true",
"fromCommitId": "ca199fd56",
"toCommitId": "ca199fd56"
}
【讨论】: