Как получить все идентификаторы запросов на получение для данного идентификатора фиксации с помощью VSTS Git API для C#
Если у меня есть коммит, который был объединен с 20 ветвями (20 запросов Pull), есть ли API, который я могу использовать, чтобы найти список из 20 идентификаторов коммитов, используя исходный листовой Id коммит в качестве параметра?
GetPullRequests(string commitId)
В идеале для этого должен быть метод API git rest, но я не могу его найти.
Спасибо!
1 ответ
Я был в состоянии понять это. Мы должны использовать PullRequestQuery и передать список коммитов в качестве входных данных. Он будет возвращать словарь слитных идентификаторов коммитов для каждого введенного нами коммита. Ниже приведен код для получения всех PR для одного идентификатора коммита.
public void GetAllPullRequestsForCommit(Guid repoId, string commitId)
{
var query = new GitPullRequestQuery();
var input = new GitPullRequestQueryInput() { Type = GitPullRequestQueryType.Commit, Items = new List<string>() { commitId } };
query.QueryInputs = new List<GitPullRequestQueryInput>() { input };
var response = _gitClient.GetPullRequestQueryAsync(query, repoId).Result;
var samplePullRequest = response.Results.SelectMany(x => x.Values).First().First().PullRequestId;
}
Больше информации здесь
Я нашел этот вопрос и ответ полезным (хотя я использовал почтальон, а не C#), потому что в документе microsoft, за мои деньги, отсутствует полезное объяснение или пример того, как выглядит ввод / тело для этого запроса.
Итак, в дополнение к ответам здесь и документации, вот как должно быть отформатировано тело ввода / результата запроса:
{
"queries": [
{
"type": "commit",
"items": [ COMMIT_ID ]
}
]
}
В этом можно убедиться, если зайти в Azure DevOps > ваш репозиторий> коммиты и щелкнуть фиксацию, которая является частью PR. Когда эта страница загружается, на вкладке сети отображается запрос к PullRequestQuery с телом / полезными данными, отформатированными, как указано выше.