【问题标题】:How can I get all pull requests Ids (from merged commits) for a given commit Id using VSTS Git API for C#如何使用 VSTS Git API for C# 获取给定提交 ID 的所有拉取请求 ID(来自合并的提交)
【发布时间】:2019-03-20 09:57:25
【问题描述】:

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

GetPullRequests(string commitId)

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

谢谢!

【问题讨论】:

  • 仓库中没有拉取请求之类的东西。
  • 你的意思是合并?到20个分店??
  • 是的,我的意思是合并到 20 个分支。我正在寻找 20 个提交 ID。我会更新我的问题。

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


【解决方案1】:

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

【讨论】:

  • 看起来你正在使用 git 之上的语言。您可以更新问题标签以包含它吗?
  • 在我的情况下,我需要第二个 GitPullRequestQueryType 我通过观察 Web 浏览器如何与 vsts 交互发现了这一点。 var lastMergeCommit = new GitPullRequestQueryInput() {Type = GitPullRequestQueryType.LastMergeCommit, Items = new List() { commitId },}; var commit = new GitPullRequestQueryInput() {Type = GitPullRequestQueryType.Commit, Items = new List() { commitId },};
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2014-04-15
    • 2013-08-18
    • 2016-03-02
    相关资源
    最近更新 更多