1

通过 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"
    }
  ]
}

但是我怎么知道文件发生了什么?就像,我如何判断它是否在此提交中被编辑,或者重命名或删除等?我似乎无法弄清楚如何获取该信息。

我怎样才能得到这些信息?

4

1 回答 1

2

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

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

"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 轻松查看重命名。
您必须克隆 repo 并复制到 agit log -M --summary才能看到这些移动/重命名。

于 2013-05-18T00:08:40.540 回答