如何检索链接到特定提交的工作项- Azure Devops REST API

j0pj023g  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(121)

我需要能够检索任何给定的特定提交的链接工作项。我目前正在使用以下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://learn.microsoft.com/en-us/rest/api/azure/devops/git/commits/get?view=azure-devops-rest-5.0和我缺少一种方法来查看它链接到什么工作项或它是否链接在所有。有人知道有什么方法可以得到这些信息吗?谢谢

5cg8jx4n

5cg8jx4n1#

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

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

然后可以添加以下参数:

  • fromCommitId- string - * 如果提供,则按字母顺序列出过滤提交的下限 *
  • toCommitId- string - * 如果提供,则按字母顺序列出过滤提交的上限 *
  • 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

结果应该包含一个workItems属性在响应的每个提交对象中,根据本文档。

注:

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

还有

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

其中 * 可以 * 允许你放弃传递to和from提交id,但文档声明它不能与其他参数组合-即使示例request * 确实 * 将它与其他参数组合。我自己还没有尝试过这个,所以当你发现你是使用从到id还是仅仅使用id时,请发表评论。

OP操作

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

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

qni6mghb2#

在Azure DevOps中,与特定提交相关联的工作项可以在以下页面找到:

https://{instance}/{team-project}/_git/{repository}/commit/{commitId}?tab=details

这些都是通过工件URI查询获得的。
以下是Azure DevOps REST API文档的示例:

POST https://dev.azure.com/fabrikam/_apis/wit/artifacturiquery?api-version=7.0

{
  "artifactUris": [
    "vstfs:///Git/Commit/3065bb47-8344-4370-982a-5183abf197fa%2F649107bd-ab35-4192-8584-601f64172f80%2F4800cfa0be564b1e606d6811e99e0380f765a9c4"
  ]
}

该请求包含一个工件URI(在本例中是提交工件)列表,用于查询链接的工作项。用于提交的工件URI以以下格式定义:

vstfs:///Git/Commit/{projectId}%2F{repositoryId}%2F{commitId}

响应包括链接到artifactUris数组中提供的所有提交的工作项。

相关问题