gpt4 book ai didi

graphql - 使用 GitHub 的 GraphQL API,我如何知道谁关闭了问题或拉取请求?

转载 作者:行者123 更新时间:2023-12-03 19:35:51 25 4
gpt4 key购买 nike

给定一个问题或拉取请求编号,我想使用对 GitHub GraphQL API 的单个查询来获取以下信息。 :

  • 无论是问题还是拉取请求
  • 问题的状态(打开、关闭)或 PR(打开、关闭、合并)
  • 如果问题或 PR 已关闭,谁关闭它以及何时关闭
  • 如果问题或 PR 被合并,谁合并以及何时合并

  • 使用以下查询,除了确定 之外,我可以完成所有这些工作。谁关闭问题或 PR:
    {
    repository(owner: "Automattic", name: "wp-calypso") {
    issueOrPullRequest(number: 23226) {
    __typename
    ... on Closable {
    closed
    closedAt
    # TODO: How to get ClosedEvent { actor } ?
    }
    ... on Issue {
    issueState: state
    title
    }
    ... on PullRequest {
    prState: state
    title
    merged
    mergedAt
    mergeCommit {
    committer {
    user {
    login
    }
    }
    }
    }
    }
    }
    }

    我正在使用 GitHub 的 GraphQL Explorer 工具运行此查询: https://developer.github.com/v4/explorer/

    我可以将问题或 PR 视为 Closable 但我想我需要从那里走到最后 ClosedEvent 影响了那个对象。这是我还没有弄清楚的部分。

    在 GitHub 的 v3 REST API 中,确定所有这些信息可能需要 2 个请求。对于 的拉取请求已关闭 (不是 合并 ), closed_by字段仅在请求拉取请求时出现 作为问题 (通过 issues API 调用)。所有其他拉取请求信息均可通过 pulls 获得API 调用。

    最佳答案

    获得关闭问题的 Actor 的一种迂回(和丑陋)方式如下(受此启发 answer)。我希望可能有更好的方法,但目前有一种方法。

    诀窍是查询给定时间线中的大量事件(如果您绝对确定在某个问题/PR 关闭后没有评论,您可以说 timeline(last: 1) ),找到 ClosedEventMergedEvent其中并提取actor

    {
    repository(owner: "Automattic", name: "wp-calypso") {
    issueOrPullRequest(number: 23226) {
    __typename
    ... on Closable {
    closed
    closedAt
    }
    ... on Issue {
    timeline(last: 100) {
    edges {
    node {
    __typename
    ... on ClosedEvent {
    actor{
    login
    }
    }
    }
    }
    }
    }
    ... on PullRequest {
    timeline(last: 100) {
    edges {
    node {
    __typename
    ... on MergedEvent {
    actor{
    login
    }
    }
    }
    }
    }
    }
    }
    }
    }

    关于graphql - 使用 GitHub 的 GraphQL API,我如何知道谁关闭了问题或拉取请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327083/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com