Wie man ein Commit in der API mit dem Befehl curl kennzeichnet

8

Ich versuche einen curl-Befehl zu verwenden, um einen Commit zu markieren. Ist das möglich? Ich ging durch den Link create-a-tag-object von GitHub, aber es funktioniert nicht.

    
Mir S Mehdi 28.03.2013, 01:14
quelle

3 Antworten

14

Das Erstellen eines Tags ist ein wenig kompliziert, aber wenn Sie nur den API-Dokumenten folgen, sollten Sie in Ordnung sein. Beachten Sie, dass die API-Dokumentation sagt:

  

Beachten Sie, dass das Erstellen eines Tag-Objekts nicht den Verweis erstellt, der ein Tag in Git erstellt. Wenn Sie in Git ein mit Anmerkungen versehenes Tag erstellen möchten, müssen Sie diesen Aufruf ausführen, um das Tag-Objekt zu erstellen, und anschließend die Referenz refs / tags / [tag] erstellen. Wenn Sie ein Lightweight-Tag erstellen möchten, müssen Sie lediglich den Verweis erstellen. Dieser Aufruf ist nicht erforderlich.

Bevor Sie also mit dem Erstellen eines Tags fortfahren, sollten Sie wissen, welche Art von Tag Sie erstellen möchten - kommentiert oder leichtgewichtig . Grundsätzlich ist ein mit Anmerkungen versehenes Tag das gleiche wie ein Lightweight, enthält aber auch eine Nachricht des Tags, Informationen zum Autor des Tags und Datum und Uhrzeit der Erstellung des Tags. Ein Lightweight-Tag ist nur ein benannter Zeiger auf ein bestimmtes Commit in Ihrem Verlauf.

Ok, also, was die API-Dokumente im Grunde sagen, ist: Wenn Sie ein annotiertes Tag erstellen wollen - Sie müssen 2 API-Aufrufe machen, und wenn Sie ein leichtes Tag erstellen wollen - müssen Sie nur 1 machen Anruf. Also, ich gebe ein Beispiel für die Erstellung eines kommentierten Tags mit den 2 API-Aufrufen, und wenn Sie ein leichtgewichtiges Tag erstellen möchten - überspringen Sie einfach den ersten API-Aufruf und gehen Sie zum zweiten.

Um ein annotiertes Tag zu erstellen, müssen Sie:

Schritt 1

Erstellen Sie ein Tag-Objekt mithilfe der API . Die API-Dokumente sind hier etwas unklar, wie die Parameter übergeben werden sollten. Was fehlt, ist ein Beispiel für die Nachricht, die Sie an den Server senden müssen. Erstellen Sie also eine Datei namens tag_object_req.json auf Ihrer lokalen Festplatte und fügen Sie das folgende JSON-Dokument ein:

%Vor%

Offensichtlich müssen Sie die Informationen im Dokument ersetzen, um Ihre Situation widerzuspiegeln. Die Bedeutung der Parameter wird in der API-Dokumentation hier beschrieben.

Nachdem Sie die Datei gespeichert haben, können Sie mithilfe von curl einen API-Aufruf durchführen, um das Tag-Objekt zu erstellen:

%Vor%

So wird der -v Teil erzwingen, dass alle HTTP Header ausgegeben werden, der -X POST Teil bedeutet, dass eine HTTP POST Anfrage gemacht werden muss, -d @tag_object_req.json gibt an, welche Datei als Inhalt (body) verwendet wird Die POST-Anfrage, --header "Content-Type:application/json" gibt den Medientyp der Anfrage an (JSON-Nachricht), und -u izuzak gibt Ihren Benutzernamen für die Autorisierung an (und curl fragt Sie nach Ihrem Passwort, wenn Sie die Anfrage stellen).

Die Antwort, die Sie erhalten, sollte eine 201 Created HTTP-Antwort sein, wobei die JSON-Nachricht wie folgt strukturiert ist:

%Vor%

Bevor Sie fortfahren, beachten Sie das Attribut sha des soeben erstellten Objekts ( e6d9fb6b9a13cab11923345e2400d5cf8df97267 ), da Sie diesen Wert im nächsten Schritt verwenden werden.

Schritt 2

Erstellen Sie eine Tag-Referenz mithilfe der Referenz-API . Die API-Dokumente sind hier viel klarer, wie die Anfrage aussehen sollte. Sie müssen also zuerst eine andere Datei auf dem Datenträger erstellen, mit dem Namen tag_ref_req.json , und diesen Inhalt in das Verzeichnis einfügen:

%Vor%

Beachten Sie jedoch, dass der Wert von sha in diesem JSON vom Typ des Tags abhängt, das Sie erstellen. Wenn Sie ein annotiertes Tag erstellen, ist der Wert des sha der gleiche Wert wie im vorherigen Schritt - der sha des Tag-Objekts ( e6d9fb6b9a13cab11923345e2400d5cf8df97267 ). Wenn Sie jedoch ein Lightweight-Tag erstellen, ist der Wert des Sha das sha des Commit-Objekts, das Sie mit dem Tag kennzeichnen, da Sie kein Tag-Objekt erstellt haben. In meinem Fall können Sie in Schritt 1 sehen, dass das Commit-Objekt, das ich markiere, c5f8759ffd808d4a57ea36c63960f3e2cc6fcc2b ist, und das wird in Ihrem Fall natürlich anders sein, wenn Sie ein leichtgewichtiges Tag erstellen.

Ok, nachdem Sie diese Datei erstellt und den sha und den Namen des Tags definiert haben, können Sie eine API-Anfrage auf ähnliche Weise wie im vorherigen Schritt mit curl:

erstellen %Vor%

Beachten Sie, dass wir jetzt eine Anfrage an https://api.github.com/repos/izuzak/test/git/refs mit der zweiten Datei als Inhalt machen.

Die Antwort sollte wieder eine 201 Created HTTP-Antwort sein, und der Text wird ein JSON-Dokument sein, das wie folgt aussieht:

%Vor%

Und jetzt kannst du zu deinem Projekt auf GitHub navigieren und zu "Zweige / Tags wechseln" wechseln und dort dein Tag sehen.

Hoffe, das hilft!

    
Ivan Zuzak 28.03.2013, 09:26
quelle
1

Sie können auch die neue Version API

ausprobieren

Ссылка

%Vor%     
Epeli 20.10.2013 09:10
quelle
0

Dies ist curl wird Releases erstellen. (Aber als ChucK erwähnt, dass es nur ein leichtes Tag erstellen kann, habe ich das persönlich nicht verifiziert)

%Vor%

Wenn ich hier hinzufüge, dass irgendjemand, wie ich, auf die Suche geht.

    
so-random-dude 28.05.2017 18:19
quelle

Tags und Links