繁体   English   中英

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

[英]How can I get all pull requests Ids (from merged commits) for a given commit Id using VSTS Git API for C#

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

GetPullRequests(string commitId)

理想情况下会有一个 git rest API 方法来做到这一点,但我似乎找不到它。

谢谢!

我能够弄清楚。 我们应该使用 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;
    }

更多信息在这里

我发现这个问题和答案很有用(即使我使用的是邮递员,而不是 C#),因为microsoft doc ,对于我的钱,缺少有关此请求的输入/正文外观的有用解释或示例。

因此,除了此处的答案和文档之外,这就是输入/结果请求正文的格式:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM