Übersicht
Dies ermöglicht es dir, viele Git-Funktionen mithilfe der REST-API neu zu implementieren. Indem du rohe Objekte direkt in der Datenbank erstellst und Branchreferenzen aktualisierst, kannst du theoretisch sämtliche Git-Funktionen nutzen, ohne Git installiert zu haben.
Die REST-API gibt einen 409 Conflict
zurück, wenn das Git-Repository leer oder nicht verfügbar ist. Ein nicht verfügbares Repository bedeutet in der Regel, dass das Repository gerade von GitHub Enterprise Cloud erstellt wird. Bei einem leeren Repository kannst du den Endpunkt PUT /repos/{owner}/{repo}/contents/{path}
REST API verwenden, um Inhalte zu erstellen und das Repository zu initialisieren, damit du die API zum Verwalten der Git-Datenbank verwenden kannst. Wende dich an uns über das GitHub-Support-Portal, wenn dieser Antwortstatus weiterhin auftritt.
Weitere Informationen zur Git-Objektdatenbank findest du im Kapitel Git Internals des Pro Git-Buchs.
Wenn du beispielsweise eine Änderung an einer Datei in deinem Repository committen möchtest, gehe wie folgt vor:
- Rufe das aktuelle Commitobjekt ab.
- Rufe die aufgewiesene Struktur ab.
- Rufe den Inhalt des Blobobjekts ab, über das die Struktur für diesen bestimmten Dateipfad verfügt.
- Ändere den Inhalt, stelle ein neues Blobobjekt mit diesem neuen Inhalt bereit, und erhalte einen Blob-SHA-Wert zurück.
- Stelle ein neues Strukturobjekt bereit, bei dem dieser Dateipfadzeiger durch deinen neuen Blob-SHA-Wert ersetzt ist, und erhalte einen Struktur-SHA-Wert zurück.
- Erstelle ein neues Commitobjekt mit dem aktuellen Commit-SHA-Wert als übergeordnetes Element und des neuen Struktur-SHA-Werts, und erhalte einen Commit-SHA-Wert zurück.
- Aktualisiere den Verweis deines Branch auf den neuen Commit-SHA-Wert.
Der Vorgang mag komplex erscheinen, ist jedoch recht einfach, wenn du das Modell verstehst. Außerdem eröffnet er dir eine Vielzahl an Möglichkeiten, wie du die API nutzen kannst.
Überprüfen der Zusammenführbarkeit von Pull Requests
Warnhinweis: Vertraue nicht darauf, Git direkt oder GET /repos/{owner}/{repo}/git/refs/{ref}
-Updates für merge
-Git-Referenzen zu verwenden, da diese Inhalte ohne Vorankündigung veralten.
Eine Verbrauchs-API muss explizit ein Pull Request anfordern, um einen Test-Mergecommit zu erstellen. Ein Test-Mergecommit wird erstellt, wenn du den Pull Request auf der Benutzeroberfläche anzeigst und die Schaltfläche „Zusammenführen“ angezeigt wird, oder wenn du mithilfe der REST-API ein Pull Request abrufst, erstellst oder bearbeitest. Ohne diese Anforderung veralten die merge
-Git-Referenzen, bis jemand das nächste Mal den Pull Request anzeigt.
Wenn du derzeit Abrufmethoden verwendest, die veraltete merge
-Git-Referenzen erzeugen, empfiehlt GitHub die folgenden Schritte, um die neuesten Änderungen aus dem Standardbranch abzurufen:
- Empfange den Pull-Request-Webhook.
- Rufe
GET /repos/{owner}/{repo}/pulls/{pull_number}
auf, um einen Hintergrundauftrag zum Erstellen des Mergecommitkandidaten zu starten. - Rufe dein Repository mit
GET /repos/{owner}/{repo}/pulls/{pull_number}
ab, um festzustellen, ob dasmergeable
-Attributtrue
oderfalse
ist. Erst nachdem du die vorherigen Schritte ausgeführt hast, kannst du Git direkt oderGET /repos/{owner}/{repo}/git/refs/{ref}
für Updates fürmerge
-Git-Referenzen verwenden.