如何查询 GraphQL GitHub API 以找到我的第一个 git 提交?

Posted

技术标签:

【中文标题】如何查询 GraphQL GitHub API 以找到我的第一个 git 提交?【英文标题】:How to query the GraphQL GitHub API fo find my first git commit ever? 【发布时间】:2020-03-17 03:21:24 【问题描述】:

我使用 API 并能够找到我曾经贡献过的所有存储库,但我很难找到我的第一个提交。

我尝试了什么:


  viewer 
    repositoriesContributedTo(first: 100, privacy: PUBLIC, contributionTypes: COMMIT, before: "2013-07-11T00:00:00") 
      totalCount
      nodes 
        nameWithOwner
      
      pageInfo 
        endCursor
        hasNextPage
      
    
  


我得到了什么:


  "errors": [
    
      "type": "INVALID_CURSOR_ARGUMENTS",
      "path": [
        "viewer",
        "repositoriesContributedTo",
        "nodes"
      ],
      "locations": [
        
          "line": 5,
          "column": 7
        
      ],
      "message": "`2013-07-11T00:00:00` does not appear to be a valid cursor."
    ,
    
      "type": "INVALID_CURSOR_ARGUMENTS",
      "path": [
        "viewer",
        "repositoriesContributedTo",
        "pageInfo"
      ],
      "locations": [
        
          "line": 8,
          "column": 7
        
      ],
      "message": "`2013-07-11T00:00:00` does not appear to be a valid cursor."
    
  ]

GitHub 的 GraphQL 浏览器链接: https://developer.github.com/v4/explorer/

【问题讨论】:

【参考方案1】:

要查找第一个提交,您可以按CREATED_AT 升序排列:


  viewer 
    repositoriesContributedTo(
      first: 100
      orderBy: 
        field : CREATED_AT
        direction : ASC
      
      privacy: PUBLIC
      contributionTypes: COMMIT) 
      totalCount
      nodes 
        nameWithOwner
      
      pageInfo 
        startCursor
        endCursor
        hasNextPage
      
    
  


附:输入参数中的before 字段应该分配有从pageInfo 结果中的startCursorendCursor 获得的光标值,但不是日期字符串。

【讨论】:

嗨,Ken,感谢您的回答,尤其是您的解释。你自己试过你的代码吗?我认为结果不可能是正确的。我确实在 GitHub 上搜索了我对开源/公共存储库所做的第一次提交。使用您的代码,我得到了一个包含 60 多个存储库的列表,其排序顺序我无法理解。第一个是我在 2019 年 3 月做出贡献的地方,最后一个是在 2018 年 6 月。但我确实至少每周为开源做出贡献,并且通过向下滚动 GitHub 的首页,我发现了 2015 年的一个提交,它没有出现在你的结果中列表。 是否有可能,“CREATED_AT”不是指提交,而是指存储库?

以上是关于如何查询 GraphQL GitHub API 以找到我的第一个 git 提交?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 HttpUrlConnect 使用 java 查询 Github graphql API

GitHub API v4:如何使用分页进行遍历? (GraphQL)

如何使用 GraphQL API 搜索 GitHub Projects Beta

GitHub 的 GraphQL API:如何获取我对特定公共存储库所做的所有提交?

如何通过 GraphQL 的“slug”查询我的 API 以获取单个实体?

什么是 GraphQL 查询以确定组织中是不是存在 GitHub 包?