C# 如何使用VSTS Git API for C获取给定提交Id的所有请求Id(来自合并提交)#

C# 如何使用VSTS Git API for C获取给定提交Id的所有请求Id(来自合并提交)#,c#,azure-devops-rest-api,C#,Azure Devops Rest Api,如果我有一个合并到20个分支的提交(可以有20个对应的拉请求),那么是否有一个API可以用于通过使用原始叶提交Id作为参数来查找20个提交Id的列表 GetPullRequests(string commitId) 理想情况下会有一个git rest API方法来实现这一点,但我似乎找不到它 谢谢 我能想出来。我们应该使用PullRequestQuery并传递一个提交列表作为输入。它将为我们输入的每个提交返回一个合并提交ID的字典。下面是获取一个提交Id的所有PRs的代码 public v

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

GetPullRequests(string commitId)
理想情况下会有一个git rest API方法来实现这一点,但我似乎找不到它


谢谢

我能想出来。我们应该使用PullRequestQuery并传递一个提交列表作为输入。它将为我们输入的每个提交返回一个合并提交ID的字典。下面是获取一个提交Id的所有PRs的代码

  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;
    }
public void GetAllPullRequestsForCommit(Guid repoId,string commitd)
{
var query=new GitPullRequestQuery();
var input=new GitPullRequestQueryInput(){Type=GitPullRequestQueryType.Commit,Items=new List(){commitId}};
query.QueryInputs=new List(){input};
var response=\u gitClient.GetPullRequestQueryAsync(查询,repoId).Result;
var samplePullRequest=response.Results.SelectMany(x=>x.Values).First().First().PullRequestId;
}

更多信息

我发现这个问题和答案很有用(尽管我使用的是邮递员,而不是C#),因为就我的钱而言,对于这个请求的输入/正文是什么样子,缺乏有用的解释或示例

因此,除了这里的答案和文档外,输入/结果请求正文的格式如下:

{
  "queries": [
    {
      "type": "commit",
      "items": [ COMMIT_ID ]
    }
  ]
}

如果您前往Azure DevOps>your repository>commits,并单击作为PR一部分的提交,则可以验证这一点。加载此页面时,网络选项卡显示对PullRequestQuery的请求,其正文/负载格式如上所述。

存储库中没有pull请求。您的意思是合并吗?到20家分行??是的,我的意思是合并到20家分行。将有20个提交ID,我正在寻找。我将更新我的问题。看起来您正在使用git之上的语言。你能更新问题标签来包含它吗?在我的例子中,我需要第二个GitPullRequestQueryType,我通过观察web浏览器如何与VST交互来发现这一点。var lastMergeCommit=new GitPullRequestQueryInput(){Type=GitPullRequestQueryType.lastMergeCommit,Items=new List(){commitId},};var commit=new GitPullRequestQueryInput(){Type=GitPullRequestQueryType.commit,Items=new List(){commitId},};