2014-10-05 11 views
8

Próbowałem zaktualizować plik w repozytorium GitHub za pomocą interfejsu API GitHub, mając jednocześnie tylko ścieżkę do tego pliku. Mój plan był pierwszy, pobierz zawartość pliku jak opisano tutaj: https://developer.github.com/v3/repos/contents/, a następnie użyj pola "sha", aby "zaktualizować plik".Jak uzyskać parametr "sha" z API GitHub bez pobierania całego pliku?

To zadziałało dokładnie tak, jak opisano w odpowiedzi tutaj How to find a Github file 's SHA blob.

Jednakże, używając GET/repos /: owner /: repo/contents /: path, pobiera cały plik, jako pole w zwróconym JSON, co jest nieefektywne. Moje pytanie brzmi: czy istnieje sposób, aby uzyskać tylko pole "sha" bez pobierania całego pliku?

Odpowiedz

7

mógłby Ci wykorzystać <rev>:<path>extended SHA-1 syntax odzyskać niektóre dane meta o Blob od macierzystego drzewa.

Na przykład, pod warunkiem, że praca z repozytorium libgit2/libgit2sharp, a chcesz odzyskać sha pliku Lib/MoQ/Moq.license.txt z master Branża:

  • wykorzystać GitHub Trees API do pobrania zawartości drzewa zgodnego z katalogiem macierzystym uzyskując zwrócony Json ładunek sha obszaru typu blob, który jest ścieżką o numerze blob, który jest ścieżką o numerze identyfikacyjnym Koniecznie url zakodować segment <rev>:<path> jak zawiera ukośniki

W skrócie:

Przykład powyższy link zwróci następujący ładunek

{ 
    "sha": "2f2c87728225f9cbb6e2d8c5997b6031e72ddca4", 
    "url": "https://api.github.com/repos/libgit2/libgit2sharp/git/trees/2f2c87728225f9cbb6e2d8c5997b6031e72ddca4", 
    "tree": [ 
    { 
     "path": "Moq.dll", 
     "mode": "100644", 
     "type": "blob", 
     "sha": "bdd4235f215541017a9f37b6155f18e309573838", 
     "size": 659968, 
     "url": "https://api.github.com/repos/libgit2/libgit2sharp/git/blobs/bdd4235f215541017a9f37b6155f18e309573838" 
    }, 
    { 
     "path": "Moq.license.txt", 
     "mode": "100644", 
     "type": "blob", 
     "sha": "c9216ccba318292d76fd308f232e7871bbbe77be", 
     "size": 1748, 
     "url": "https://api.github.com/repos/libgit2/libgit2sharp/git/blobs/c9216ccba318292d76fd308f232e7871bbbe77be" 
    }, 
    { 
     "path": "Moq.xml", 
     "mode": "100644", 
     "type": "blob", 
     "sha": "160c1b5165fd967f4c79bc6043f0cc2ec28710d8", 
     "size": 314572, 
     "url": "https://api.github.com/repos/libgit2/libgit2sharp/git/blobs/160c1b5165fd967f4c79bc6043f0cc2ec28710d8" 
    } 
    ], 
    "truncated": false 
} 
+0

Czy można to wykorzystać do uzyskania sha dla pliku/katalogu w prywatnym repozytorium GitHub? –

1

Albo zrobić:

GET/repos /: Owner /: repo/Contents /: ścieżkę

na ścieżce plik, a następnie wybierz sha ze zwróconych danych.

Powiązane problemy