如何使用VSTS Git API for C#

时间:2018-10-15 22:55:27

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

如果我有一个合并到20个分支的提交(20个请求请求),是否有一个API可以通过使用原始的叶子提交ID作为参数来查找20个提交ID的列表?

GetPullRequests(string commitId)

理想情况下,会有一个git rest API方法来执行此操作,但我似乎找不到它。

谢谢!

2 个答案:

答案 0 :(得分:0)

我能够弄清楚。我们应该使用PullRequestQuery并传递提交列表作为输入。对于我们输入的每个提交,它将返回合并提交ID的字典。以下是获取一个提交ID的所有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;
    }

更多信息here

答案 1 :(得分:0)

我发现这个问题和答案很有用(即使我使用的是邮递员,而不是C#),因为the microsoft doc出于我的金钱,没有一个有用的解释或示例,说明此请求的输入/正文是什么样。

因此,除了此处的答案和文档外,这还应设置输入/结果请求正文的格式:

white-space: pre-wrap

如果您转到 Azure DevOps>存储库>提交,然后单击PR中的提交,则可以验证这一点。加载此页面后,“网络”标签会显示对 PullRequestQuery 的请求,其正文/有效载荷的格式如上所述。