【问题标题】:How to get the merge_method for a merged GitHub pull request如何获取合并的 GitHub 拉取请求的 merge_method
【发布时间】:2022-07-15 17:42:13
【问题描述】:

我正在尝试确定应用于 GitHub 拉取请求的合并方法。

API 上有一个merge_method 属性用于合并 PR。

https://docs.github.com/en/rest/reference/pulls#merge-a-pull-request

但我在 GET 的响应中看不到此功能

https://docs.github.com/en/rest/reference/pulls#get-a-pull-request

我在任何地方都找不到太多关于这个的信息,有没有人想出一个聪明的解决方案来计算这个值?还是会在不久的将来添加API?

【问题讨论】:

    标签: github


    【解决方案1】:

    GitHub 不存储此信息,因为拉取请求可以通过拉取请求上的合并按钮以外的方式合并。

    例如,如果我自己执行 PR 和主分支的手动合并,然后将结果推送到主分支,这将关闭合并的拉取请求,因为主分支现在包含拉取的头部要求。如果我进行快进合并也是如此,这可能是通过 Web 界面通过变基完成的行为。

    您甚至可以通过使用 Web 界面、API 或其他方式将分支 A 合并到分支 B,然后将分支 B 合并到主分支来关闭分支 A 的拉取请求。 GitHub 将这种技术用于其部署训练,其中 B 是训练,A 是普通功能分支。

    基本上,只要主分支更新为在拉取请求中包含功能分支的头部,该拉取请求就会被视为合并。例外是壁球合并,这不会发生,这是特殊处理的。因此,无法保证可以找到这些信息。

    【讨论】:

    • 谢谢。不幸的是,该值没有保留在提供它的场景中。在我们的用例中,我们通过 GitHub 合并所有 PR,它将提供我们需要的信息。相反,我想我们将不得不求助于查看提交元数据,例如将合并提交评论与 PR 标题的评论进行比较。但如果 GH 行为在未来发生变化,这将相当脆弱。
    【解决方案2】:

    好像你可以从他们的 GraphQL API 中得到它:

    {
      repository(owner: "TeamCodeStream", name: "codestream") {
        viewerDefaultMergeMethod
      }
    }
    

    从这个 SO 答案转发的方法:https://stackoverflow.com/a/64146400/12206312

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2014-04-15
      • 2016-12-11
      • 2015-05-14
      • 1970-01-01
      • 2012-09-22
      • 2021-07-22
      • 2016-11-15
      • 1970-01-01
      相关资源
      最近更新 更多