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 ログで見つかった履歴に基づいています。
したがって、GitHub がその情報を提供するには、ツリー API だけでは不十分です。特定のツリーまたはファイルに関連付けられたログから情報を抽出する必要があります。

コミット用のAPI を使用して、特定のファイルのコミットを一覧表示したり、2 つのコミットを比較して、編集に関する詳細を確認したりできます。

"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 だけで名前の変更を簡単に確認できるとは思いません。これらの移動/名前変更を確認するには
、レポを複製して a に複製する必要があります。git log -M --summary

于 2013-05-18T00:08:40.540 に答える