Wie bekomme ich den "sha" -Parameter von der GitHub-API, ohne die gesamte Datei herunterzuladen?

8

Ich habe versucht, eine Datei in einem GitHub-Repository mithilfe der GitHub-API zu aktualisieren, während ich nur einen Pfad zu dieser Datei habe. Mein Plan war zuerst, holen Sie sich den Dateiinhalt wie hier beschrieben: Ссылка , und verwenden Sie dann das "sha" -Feld um "eine Datei zu aktualisieren".

Es funktionierte gut, genau wie in der Antwort hier beschrieben den SHA - Blob einer Github - Datei finden .

Wenn Sie jedoch GET / repos /: owner /: repo / contents /: path verwenden, wird die gesamte Datei als Feld im zurückgegebenen JSON heruntergeladen, was ineffizient ist. Meine Frage ist also: Gibt es eine Möglichkeit, nur das "sha" -Feld zu bekommen, ohne die gesamte Datei herunterzuladen?

    
Dekel Adler 05.10.2014, 14:35
quelle

2 Antworten

7

Sie können die <rev>:<path> erweiterte SHA-1-Syntax nutzen, um einige Meta-Daten abzurufen Daten über den Blob von seinem übergeordneten Baum.

Zum Beispiel, vorausgesetzt, Sie arbeiten mit dem libgit2 / libgit2sharp -Repository, und Sie möchten Um den Sha der Datei Lib/MoQ/Moq.license.txt aus dem Zweig master abzurufen:

  • Nutzen Sie die GitHub Trees-API , um den Inhalt des Tree-Abgleichs abzurufen das Lib/MoQ Elternverzeichnis
  • Abrufen der zurückgegebenen Json-Payload des sha des Blobs, dessen Pfad Moq.license.txt ist
  • Achten Sie darauf, dass Sie das <rev>:<path> -Segment als URL codieren, da es Schrägstriche enthält

Kurz gesagt:

  • Syntax: GET / repos / & lt; Besitzer & gt; / & lt; Repo & gt; / git / Bäume / url_encode (& lt; Zweigname & gt;: & lt; Elternpfad & gt;)
  • Beispiel: Ссылка

Der obige Beispiellink gibt die folgende Nutzlast zurück

%Vor%     
nulltoken 05.10.2014 15:40
quelle
1

Oder machen Sie ein:

GET / repos /: Besitzer /: Repo / Inhalt /: Pfad

auf dem Pfad zu der Datei und wählen Sie dann die sha aus den zurückgegebenen Daten.

    
aaa 02.01.2018 18:25
quelle

Tags und Links