簡體   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