Это специально для API GitHub GraphQL. Насколько я понимаю, GraphQL состоит в том, что, поскольку он имеет структуру графа, можно получить все, что угодно, за один раз.
Однако я не могу понять, как получить blobs
(предпочтительно файлов, которые изменились) для всех коммитов в репозитории.
Сейчас у меня есть 3 разных запроса, которые я использую впоследствии.
Получение коммитов вместе с деревом oid -
query {
repository(name: "disradicator", owner: "armsp") {
name
defaultBranchRef {
target {
... on Commit {
history(first:10){
nodes{
message
oid
tree{
oid
}
}
}
}
}
}
}
}
Используя oid
из дерева, чтобы получить tree entries
-
query {
repository(name: "disradicator", owner: "armsp") {
treeDetails: object(oid: "554221f86bce59a7fe269be6c69dcccf9f9b1364"){
... on Tree {
oid
entries{
name
type
oid
}
}
}
}
}
Использование oid
для каждого элемента в entries
для получения blob
-
query {
repository(name: "disradicator", owner: "armsp") {
description
name
blobDetails: object(oid: "f288702d2fa16d3cdf0035b15a9fcbc552cd88e7") {
... on Blob {
commitUrl
commitResourcePath
text
oid
}
}
}
}
Разве они не могут быть объединены в один запрос?
Можно ли получить большие двоичные объекты только для файлов, которые изменились, или для чего-то похожего на patch
в GITHub REST API v3, который содержал разницу между родителем и текущим коммитом?