【问题标题】:How to get blame information of a line of code on a repository from github API如何从github API获取存储库中一行代码的责备信息
【发布时间】:2018-01-16 05:35:03
【问题描述】:

我在here找到的所有现有的github API中搜索了一个源文件中某行代码的责备信息,但我找不到实现它的方法,该API未列出上述网站。谁能指出我获取源文件的一行代码的责备信息的方法,该源文件托管在 github repos 中,无需克隆它并在本地运行git blame

提前致谢

【问题讨论】:

    标签: git github-api


    【解决方案1】:

    GitHub API v4 有一个有效的责备 API。以下是正确查询的示例:

    {
      # repository name/owner
      repository(name: "MidiPlayerJS", owner: "TimMensch") {
        # branch name
        ref(qualifiedName:"tim") {      
          target {
            # cast Target to a Commit
            ... on Commit {
              # full repo-relative path to blame file
              blame(path:"package.json") {
                ranges {
                  commit {
                    author {
                      name
                    }
                  }
                  startingLine
                  endingLine
                  age
                }
              }
            }
          }
        }
      }
    }
    

    这适用于我的explorer

    【讨论】:

    • 我们可以在上述解决方案中添加特定范围的代码行吗?
    • developer.github.com/v4/object/commit——blame() 的唯一参数是路径。您需要根据要查找的信息过滤结果。
    【解决方案2】:

    GitHub REST API http://developer.github.com/v3/ 中没有 Blame API

    但是您可以通过处于早期访问模式的新 GraphQL API 获取责任信息。请参阅此文档https://developer.github.com/early-access/graphql/

    【讨论】:

    • 如何使用 GraphQL 创建查询以获取责备信息?
    • 在撰写本文时,我还没有找到任何通过 GraphQL API 获取责备信息的方法。如果您查看 Commit 的参考,它有一个 blame 字段,但没有办法获得提交。我猜这将通过 Ref 作为连接添加,但我不知道 GitHub 在那里计划什么。
    • 你可以得到一个提交参考(见gist.github.com/TimMensch/24c93785f1995542620bab94b92ab1ed),但到目前为止,责备API正在抛出一个内部错误。
    • 我有一个错字。它确实有效。我正在添加另一个答案。
    猜你喜欢
    • 2014-09-29
    • 2020-03-03
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 2015-11-11
    • 2016-03-18
    • 2020-09-28
    相关资源
    最近更新 更多