查看Github树API中的文件发生了什么

时间:2013-05-17 21:14:41

标签: github github-api

通过github API,我列出了某个提交的所有文件和文件夹,如下所示:

https://api.github.com/repos/:owner/:repo/git/trees/:sha?recursive=1

这给了我一个这样的清单:

{
  "sha": "9fb037999f264ba9a7fc6274d15fa3ae2ab98312",
  "url": "https://api.github.com/repos/octocat/Hello-World/trees/9fb037999f264ba9a7fc6274d15fa3ae2ab98312",
  "tree": [
    {
      "path": "file.rb",
      "mode": "100644",
      "type": "blob",
      "size": 30,
      "sha": "44b4fc6d56897b048c772eb4087f854f46256132",
      "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/44b4fc6d56897b048c772eb4087f854f46256132"
    },
    {
      "path": "subdir",
      "mode": "040000",
      "type": "tree",
      "sha": "f484d249c660418515fb01c2b9662073663c242e",
      "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/f484d249c660418515fb01c2b9662073663c242e"
    },
    {
      "path": "exec_file",
      "mode": "100755",
      "type": "blob",
      "size": 75,
      "sha": "45b983be36b73c0788dc9cbcb76cbb80fc7bb057",
      "url": "https://api.github.com/repos/octocat/Hello-World/git/blobs/45b983be36b73c0788dc9cbcb76cbb80fc7bb057"
    }
  ]
}

但我怎么能告诉文件发生了什么?比如,我如何判断它是否在此提交中编辑,或重命名或删除等?我似乎无法弄清楚如何获得这些信息。

我如何获得该信息?

1 个答案:

答案 0 :(得分:2)

编辑,重命名或删除基于git log中的历史记录 因此,单独的树API不足以让GitHub提供该信息:您需要从与给定树或文件关联的日志中提取它。

您可以使用API for commits列出给定文件的提交,或者甚至将两个提交进行比较,这将为您提供编辑方面的详细信息。

"files": [
    {
      "sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
      "filename": "file1.txt",
      "status": "added",
      "additions": 103,
      "deletions": 21,
      "changes": 124,
      "blob_url": "https://github.com/octocat/Hello-World/blob/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt",
      "raw_url": "https://github.com/octocat/Hello-World/raw/6dcb09b5b57875f334f61aebed695e2e4193db5e/file1.txt",
      "patch": "@@ -132,7 +132,7 @@ module Test @@ -1000,7 +1000,7 @@ module Test"
    }
  ]

但我不认为你可以通过API单独看到重命名 您必须克隆存储库并使用git log -M --summary才能查看这些移动/重命名。