【问题标题】:How to retrieve Work Item linked to specific commit - Azure Devops REST API如何检索链接到特定提交的工作项 - Azure Devops REST API
【发布时间】:2019-06-25 07:16:37
【问题描述】:

我需要能够检索任何给定特定提交的链接工作项。我目前正在使用以下 api 调用

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?api-version=5.0

回复如下

{
  "parents": [],
  "treeId": "7fa1a3523ffef51c525ea476bffff7d648b8cb3d",
  "push": {
    "pushedBy": {
      "id": "8c8c7d32-6b1b-47f4-b2e9-30b477b5ab3d",
      "displayName": "Chuck Reinhart",
      "uniqueName": "fabrikamfiber3@hotmail.com",
      "url": "https://vssps.dev.azure.com/fabrikam/_apis/Identities/8c8c7d32-6b1b-47f4-b2e9-30b477b5ab3d",
      "imageUrl": "https://dev.azure.com/fabrikam/_api/_common/identityImage?id=8c8c7d32-6b1b-47f4-b2e9-30b477b5ab3d"
    },
    "pushId": 1,
    "date": "2014-01-29T23:33:15.2434002Z"
  },
  "commitId": "be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4",
  "author": {
    "name": "Chuck Reinhart",
    "email": "fabrikamfiber3@hotmail.com",
    "date": "2014-01-29T23:32:09Z"
  },
  "committer": {
    "name": "Chuck Reinhart",
    "email": "fabrikamfiber3@hotmail.com",
    "date": "2014-01-29T23:32:09Z"
  },
  "comment": "First cut\n",
  "url": "https://dev.azure.com/fabrikam/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4",
  "remoteUrl": "https://dev.azure.com/fabrikam/_git/Fabrikam-Fiber-Git/commit/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4",
  "_links": {
    "self": {
      "href": "https://dev.azure.com/fabrikam/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4"
    },
    "repository": {
      "href": "https://dev.azure.com/fabrikam/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249"
    },
    "changes": {
      "href": "https://dev.azure.com/fabrikam/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4/changes"
    },
    "web": {
      "href": "https://dev.azure.com/fabrikam/_git/Fabrikam-Fiber-Git/commit/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4"
    },
    "tree": {
      "href": "https://dev.azure.com/fabrikam/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/trees/7fa1a3523ffef51c525ea476bffff7d648b8cb3d"
    }
  }
}

来自https://docs.microsoft.com/en-us/rest/api/azure/devops/git/commits/get?view=azure-devops-rest-5.0,我错过了查看其链接到的工作项或是否已链接的方法。有谁知道获取此信息的方法?谢谢

【问题讨论】:

  • @HughLin-MSFT 我尝试了答案中的方法,但仍然不确定。查看更新答案的评论

标签: azure azure-devops-rest-api


【解决方案1】:

您可以使用Get Commits API,docs here。基本请求如下所示:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?api-version=5.0

然后您可以添加以下参数:

  • fromCommitId - 字符串 - 如果提供,按字母顺序过滤提交的下限
  • toCommitId - 字符串 - 如果提供,则按字母顺序过滤提交的上限
  • includeWorkItems - boolean - 是否包含链接的工作项

因此您的最终查询看起来像这样,您的 toCommitId 和 fromCommitId 参数是您所追求的提交 ID(文档没有具体说明这些是包含性的还是排他性的,因此您可能需要稍微调整一下):

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?includeWorkItems=true&.toCommitId={searchCriteria.toCommitId}&fromCommitId={searchCriteria.fromCommitId}&api-version=5.0

根据this documentation,结果应在响应的每个提交对象内包含一个workItems 属性。

注意:

在名称中使用 searchCriteria 前缀的参数可以在没有它的情况下指定为查询参数,例如searchCriteria.$top -> $top


还有

  • ids - 数组 - 如果提供,指定要获取的提交的确切提交 ID。不得与其他参数结合使用。

可以允许您放弃传入和传出提交 ID,但文档声明它可能不会与其他参数结合 - 即使示例请求确实将它与其他参数结合起来。我自己没有尝试过,所以当你发现你是使用 from-to id 还是只是 ids 时,请发表评论。


OP 操作

OP 最终使用了以下请求,因为他们不介意返回所有提交:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?includeWorkItems=true&api-version=5.0

【讨论】:

  • 谢谢马特,我运行了https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?includeWorkItems=true&api-version=5.0,响应包括每个提交的以下字段:commitId、作者、提交者、评论、changeCounts、url、remoteUrl。这个对吗?不知道从哪里访问 workItems。
  • @kg123 根据this documentation,响应的每个提交对象内都应该有一个“workItems”属性。
  • 没问题@kg123 你介意评论你使用的方法吗? 1) fromCommitIdtoCommitIdincludeWorkItems 并指定是否为 to 和 from 值传递了相同的提交 id,或者 2) ids 参数与 includeWorkItems 一起作为值的确切提交 id。然后我可以更新我的答案以对社区更有用。 :-)
  • 当然,我使用第一种方法只包括includeWorkItems,不包括参数fromCommitIdtoCommitId 来获取包含相关工作项的所有提交。
  • 经过尝试,includeworkitems 不能与ids 结合使用,但可以与fromCommitIdtoCommitId 结合使用
猜你喜欢
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
相关资源
最近更新 更多