Как получить рабочий элемент, связанный с конкретным коммитом - API REST Azure Devops - PullRequest
0 голосов
/ 22 июня 2019

Мне нужно иметь возможность получить связанный рабочий элемент для любого конкретного коммита. В настоящее время я использую следующий вызов 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 и мне не хватает способа увидеть, с каким рабочим элементом он связан или вообще связан. Кто-нибудь знает способ получить эту информацию? Спасибо

1 Ответ

1 голос
/ 23 июня 2019

Вы можете использовать Get Commits API, документы здесь . Базовый запрос выглядит так:

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

Затем можно добавить следующие параметры:

  • fromCommitId - строка - Если предусмотрено, нижняя граница для фильтрации фиксируется в алфавитном порядке
  • toCommitId - строка - Если предусмотрено, верхняя граница для фильтрации фиксируется в алфавитном порядке
  • includeWorkItems - логическое значение - Включать ли связанные рабочие элементы

Чтобы ваш окончательный запрос выглядел примерно так, чтобы ваши параметры toCommitId и fromCommitId были вашим идентификатором коммита, к которому вы стремитесь (документация не уточняет, являются ли они инклюзивными или эксклюзивными, поэтому вам, возможно, придется немного изменить это):

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 в своем имени, могут быть указаны без него в качестве параметров запроса, например, Критерии поиска. $ top -> $ top


Существует также :

  • ids - массив - Если указан, указывает точные идентификаторы коммитов для извлечения. Не может сочетаться с другими параметрами.

Который может позволить вам отказаться от передачи идентификаторов коммитов в и из коммитов, но в документации указано, что он не может быть объединен с другими параметрами - даже если пример запроса объединяет с другими параметрами. Я сам не пробовал, поэтому, пожалуйста, прокомментируйте, когда узнаете, идете ли вы с-to id или просто с id.


OPs action

Операция в конечном итоге использовала следующий запрос, поскольку они не возражали против всех возвращаемых коммитов:

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