Ответ 1
Это должно быть относительно конкретного коммита, так как некоторые файлы могут присутствовать в некоторых коммитах и отсутствовать в других, поэтому, прежде чем вы сможете смотреть файлы, вам нужно использовать что-то вроде Список коммитов в репозитории:
GET /repos/:owner/:repo/commits
Если вас интересует последняя фиксация на ветке, вы можете установить для параметра sha
имя ветки:
sha
string
SHA или ветка, чтобы начать перечисление коммитов из.
Как только у вас есть хеш фиксации, вы можете проверить, что зафиксировать
GET /repos/:owner/:repo/git/commits/:sha
который должен вернуть что-то вроде этого (усечен из документации GitHub):
{
"sha": "...",
"...",
"tree": {
"url": "https://api.github.com/repos/octocat/Hello-World/git/trees/691272480426f78a0138979dd3ce63b77f706feb",
"sha": "691272480426f78a0138979dd3ce63b77f706feb"
},
"...": "..."
}
Посмотрите на хэш своего дерева, которое по сути является его содержимым каталога. В этом случае 691272480426f78a0138979dd3ce63b77f706feb
. Теперь мы можем запросить содержимое этого дерева:
GET /repos/:owner/:repo/git/trees/:sha
Результат из примера GitHub -
{
"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"
}
]
}
Как вы можете видеть, у нас есть некоторые blob, которые соответствуют файлам и некоторым дополнительным деревьям, которые соответствуют подкаталогам. Вы можете сделать это рекурсивно.