如何知道多个存储库已重命名的新名称?

时间:2018-01-02 16:01:53

标签: github graphql github-api github-graphql

我有一个应用程序,它记录了数据库中某些GitHub存储库的名称。以下面的3个回购为例。

  1. https://github.com/zhangkun-Jser/react-experience
  2. https://github.com/zhangkun-Jser/vue-plug
  3. https://github.com/hsluoyz/casbin
  4. 但问题是我录制的回购可能会被重命名。例如,上述三个repos分别重命名为:

    1. https://github.com/zhangkun-Jser/react-kit
    2. https://github.com/zhangkun-Jser/FE-plugs
    3. https://github.com/casbin/casbin
    4. 我想写一些代码来主动将任何旧的repo名称更新为我的数据库中的新repo名称。例如,将zhangkun-Jser/react-experience更新为zhangkun-Jser/react-kit

      我知道我可以使用GitHub V3 API获取每个仓库的存储库信息,然后获取新名称。但这需要发送每个回购请求。我的问题是if there is any method to get the new names for a list of repos in one request

      注意:回购可以来自不同的所有者,例如示例。

      我尝试使用GraphQL API v4,但我不知道如何获取回购列表的信息。并且V4 API似乎无法识别旧名称。例如,如果我发送以下请求:

      {
        repository(owner: "zhangkun-Jser" name: "react-experience") {
          name
          id
        }
      }
      

      回复是:

      {
        "data": {
          "repository": null
        },
        "errors": [
          {
            "message": "Could not resolve to a Repository with the name 'react-experience'.",
            "type": "NOT_FOUND",
            "path": [
              "repository"
            ],
            "locations": [
              {
                "line": 2,
                "column": 3
              }
            ]
          }
        ]
      }
      

      任何人都可以提供帮助?感谢。

1 个答案:

答案 0 :(得分:1)

您可以存储存储库的节点ID,并按ID查找节点:

query { 
  repository (owner:"osowskit", name:"about") { 
    id
  },
  node(id:"MDEwOlJlcG9zaXRvcnk1NjE2NzA2OQ") {
  ... on Repository {
      id,
      name,
      nameWithOwner
    }
  }
}