【问题标题】:How to retrieve linked work items from list of commits如何从提交列表中检索链接的工作项
【发布时间】:2021-04-18 21:38:04
【问题描述】:

尝试使用提交 ID 列表检索链接的工作项列表。

发现 this 提交 Azure DevOps REST API,由于下面的 ids 参数注释,它不会返回链接的工作项。

不得与其他参数结合使用。

还有其他 API 可以实现这个目标吗?

【问题讨论】:

    标签: azure-devops azure-devops-rest-api


    【解决方案1】:

    如何从提交列表中检索链接的工作项

    我们可以使用请求正文中的 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
    

    测试结果是:

    【讨论】:

    • 感谢@Leo 我正在使用 .NET API,所以我对 REST API 示例很满意。您最终在 GET Commits Batch API 上使用了哪个示例?在两个版本之间提交还是通过提交 ID 列表提交?通过具有 includeWorkItems 参数集的提交 ID 列表通过提交使用提交批处理 API 不会返回工作项,但前者会返回。附言。此 ADO 实例用于企业客户端。也很高兴通过其他 MS 建议的渠道报告此问题
    • @Mlh,都没有,只给出一个简单的测试样本,请求正文为“includeWorkItems”:“true”。您要使用哪个示例?
    • On Get Commits Batch 设置“ids”不返回工作项。同样提交 - 获取(通过 ID 获取单个提交)不返回包含的工作项。
    • @Mlh,很遗憾,Get (one/multi) Commit API 中不存在此选项,如果我们指定提交 ID,则无法获取相关工作项,您可以添加您在我们的 UserVoice 网站 (developercommunity.visualstudio.com/content/idea/…) 上请求此功能,该网站是我们产品建议的主要论坛。感谢您帮助我们构建更好的 Azure DevOps。
    • @Mlh,这个问题怎么样?下面的答案是否解决了您的问题,如果是,您可以接受它作为答案,这样它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。如果没有,请告诉我们您是否需要进一步的帮助。
    【解决方案2】:

    您可以通过循环遍历每个提交哈希值来做到这一点。在请求中,对“fromCommitid”和“toCommitid”值使用相同的提交哈希。比如:

    {
      "includeWorkItems": "true",
      "fromCommitId": "ca199fd56",
      "toCommitId": "ca199fd56"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-13
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2019-07-22
      • 2018-03-06
      相关资源
      最近更新 更多