Veröffentlichen von WordPress-Plug-Ins mit Git

Wenn Sie ein Plug-in für das WordPress-Repository gehostet haben, sind Sie mit SVN und einigen Befehlen ziemlich vertraut. In diesem Tutorial zeige ich Ihnen, wie Sie mit Git, einem anderen von GitHub beliebten Versionskontrollsystem, Ihr Plug-In veröffentlichen und verwalten können.


Was ist Git?

Git und SVN sind Beispiele für Versionskontrollsysteme. Das WordPress-Repository verwendet Letzteres (wenn Sie ein Plug-In in WordPress gehostet haben, sind Sie mit dem Einchecken vertraut, um Änderungen an diesem Repository vorzunehmen). Beide ermöglichen es Ihnen, Änderungen an Ihrem Code zu verfolgen, aber es gibt große Unterschiede zwischen ihnen, wie sie dies tun.

SVN basiert auf einem einzigen "zentralen Repository" des Codes (in unserem Kontext: dem WordPress Plug-In-Repository). Jedes Mal, wenn Sie Ihr Plug-In bearbeiten möchten, müssen Sie eine lokale Kopie erstellen, die Änderungen vornehmen und diese Änderungen anschließend in das WordPress-Repository "einchecken".

Git ist ein dezentrales Versionskontrollsystem. Anstatt nur eine lokale Kopie Ihres Plug-Ins zu haben, haben Sie einen vollständigen Klon Ihres Plug-In-Repositorys, einschließlich aller Änderungen. Das Repository ist jetzt eigenständig auf Ihrem Computer vorhanden. Sie können Änderungen festschreiben und verfolgen, Änderungen rückgängig machen oder Ihr Plug-In in verschiedene Richtungen "verzweigen", alles auf Ihrem lokalen Computer. Erst wenn Sie Ihr Plug-in gerne aktualisieren, können Sie Ihre Änderungen in Ihrem WordPress-Repository veröffentlichen, um sie öffentlich zu machen.

In diesem Lernprogramm gehe ich davon aus, dass Sie ein Plug-In im Repository für WordPress-Plug-Ins gehostet haben oder zumindest Ihre Hosting-Anfrage genehmigt wurde. Wenn Sie nicht sicher sind, wie Sie Ihr Plug-in von WordPress hosten lassen, sollten Sie unseren Artikel zur Veröffentlichung im WordPress-Plugin-Repository lesen.


Was sind die Vorteile der Verwendung von Git über SVN??

Es gibt zahlreiche Argumente für und gegen die Verwendung von Git über SVN (sowie dezentrale Versionskontrollsysteme im Allgemeinen). Viele davon beruhen auf den grundsätzlich unterschiedlichen Wegen, mit denen Git und SVN Änderungen verfolgen. Eine hervorragende, eingehende Analyse von Git und SVN finden Sie in CodeForests Artikel "Git vs SVN", jedoch für WordPress-Entwickler:

  • Offline-Zugriff - Sie können Commits in Ihrem persönlichen "Entwicklungs-Repository" vornehmen und verfolgen. Nur wenn Sie Ihre Änderungen veröffentlichen möchten, benötigen Sie Zugriff auf das WordPress-Repository.
  • Sobald Sie es gelernt haben, ist Git es viel Einfacher zu verwenden - Dieser Artikel führt Sie durch die grundlegenden Arbeitsabläufe, die Sie zum Vornehmen von Änderungen und zum Aktualisieren im Repository benötigen. Ich habe unten einige Ressourcen verlinkt, die detailliertere Informationen zur Verwendung von Git enthalten.
  • GitHub - Seien wir ehrlich, so haben die meisten von uns von Git gehört. Seine Fähigkeit, "Social Coding" zu fördern, wird durch die dezentrale Natur von Git ermöglicht. Sie können eine Kopie Ihres Plug-Ins in GitHub aufbewahren, um die Community zu ermutigen, daran teilzunehmen und Verbesserungen oder Erweiterungen vorzunehmen, die Sie dann hinzufügen können. Im Allgemeinen ist es eine gute Idee, Ihr Plug-In anderen Entwicklern zugänglich zu machen.
  • Einfaches "Verzweigen" des Plug-Ins - Sie können "experimentelle" Zweige in Ihrer lokalen Kopie erstellen, um mögliche neue Funktionen zu testen. Wenn sie funktionieren, können Sie sie dann wieder zusammenführen, wenn die nächste Version Ihres Plug-Ins veröffentlicht werden soll.

Ein Nachteil der Verwendung von Git besteht darin, es mit einem SVN-Repository gut zu spielen. Es ist eigentlich nicht so schwer dank git svn, und dieser Artikel soll Sie durch diesen Artikel führen.


Schritt 1 Laden Sie Git

Wenn Sie es noch nicht getan haben, sollten Sie Git installieren. Wie Git installiert wird, ist im Git Community-Buch und im Pro Git-Buch (beides) ziemlich gut beschrieben Ausgezeichnet Ressourcen, wenn Sie Git noch nicht kennen. Wie Git installiert wird, hängt von Ihrem Betriebssystem ab und auch davon, welche GUI-Programme Ihnen zur Verfügung stehen. In diesem Tutorial mache ich alles über die Befehlszeile - und ich ermutige Sie, dies ebenfalls zu tun. Am Ende des Artikels werde ich einige GUI-Programme vorschlagen, die Sie verwenden können, aber normalerweise verwende ich sie nur, um die Verzweigungen des Repositorys zu visualisieren.


Schritt 2 Klonen Sie das von WordPress gehostete Repository Ihres Plug-Ins

Wie zuvor erwähnt, checken Sie mit Git keine Kopie Ihres Plug-Ins aus. Sie klonen das Repository mit einem Verlauf der vorgenommenen Änderungen sowie aller zugehörigen Verzweigungen und Tags. Schritt 1 ist das Klonen des von WordPress gehosteten Repositorys Ihres Plug-Ins. Als Beispiel werde ich ein Plug-In "Post Type Archives Link" veröffentlichen, das auf einem vorherigen Tutorial basiert. Öffnen Sie also Ihre Befehlszeilenschnittstelle (sobald Sie in das WordPress-Repository aufgenommen wurden), und navigieren Sie zu dem Ort, an dem Sie die lokale Version Ihres Plug-Ins speichern möchten. Ich werde es in einem Ordner namens 'Plugins'. Dort möchten wir Git mitteilen, wo er unser Plug-In finden kann. Zum Zeitpunkt des Schreibens gibt es fast 20.000 Plug-Ins im WordPress-Repository und über 500.000 Versionen. Wir möchten nicht darauf warten, dass Git jedes dieser Elemente durchsucht, um unser Plug-in zu finden. Wir finden also zunächst heraus, mit welcher Revision unser Plug-In beginnt (wir wollen die gesamte Geschichte). Dazu erhalten wir das erste Protokoll Ihres Plug-Ins (wenn es ursprünglich zum Repository hinzugefügt wurde):

 svn log -r 1: HEAD --limit 1 http://plugins.svn.wordpress.org/ihr-plug-in-name

Es wird eine Weile nachdenken und dann sollten Sie so etwas sehen:

 r520657 | Plugin-Master | 2012-03-19 03:56:31 +0000 (Mo, 19 Mär 2012) | 1 Zeile

Diese erste Nummer, '520657' für mein Plug-In, ist die erste Revision. Wir werden es im nächsten Befehl verwenden, mit dem Git aufgefordert wird, den Verlauf unseres Plug-Ins zu klonen. Ersetzen Sie XXXXXX durch Ihre Revisionsnummer.

 git svn klon -s -rXXXXXX --no-minimier-url http://plugins.svn.wordpress.org/ihr-plug-in-name cd ihr-plugin-name git svn holen git svn rebase ab

Das '-s'gibt Git an, das Standardlayout (Tag, Trunk, Branches) eines SVN-Repositorys zu erwarten. Das '--No-Minimierungs-URL'stoppt es außerhalb des Plug-In-Ordners. Stellen Sie sicher, dass es nicht fehlt. Wenn Sie es weglassen, können Sie das gesamte WordPress Plug-In-Repository kopieren. Das -rXXXXXX sagt Git, nach welcher Revision gesucht werden soll. Wenn Sie dies nicht angeben, wird Git den gesamten Verlauf des Repositorys durchsuchen. Das sind über 500.000 Versionen. Ich habe das einmal weggelassen und es dauerte ungefähr zwei Stunden. Damit sollte es nur wenige Minuten dauern.

Sobald es fertig ist, sollten Sie feststellen, dass ein Ordner mit dem Namen '' erstellt wurde.Ihr-Plugin-Name'in Ihrem' Plugins 'Ordner. Lass uns ein bisschen erkunden. Navigiere zu 'Ihr-Plugin-Name'Ordner und führen Sie einen Befehl aus, um zu sehen, welche' Zweige 'vorhanden sind:

 Git-Zweig -a

Dies listet alle Niederlassungen auf, lokal und entfernt. Der einzige lokale Zweig sollte Master sein (das Sternchen zeigt an, dass dies der Zweig ist, in dem Sie sich befinden). Die anderen Zweige sind der 'Trunk' und, falls vorhanden, ein Zweig für jedes Tag (SVN behandelt Tags als Zweige, aber Git ist ein bisschen schlauer als das)..

Gehen Sie zu Ihrem 'lokalen Ordner', 'plugins / dein-plugin-name', sollten Sie Ihre Plug-In-Dateien sehen (falls vorhanden). Bevor Sie dort Dateien erstellen oder bearbeiten, erstellen Sie einen separaten Zweig, an dem Sie arbeiten können.

Aktualisieren: Die obigen Befehle wurden aufgrund eines Problems aktualisiert, das in den folgenden Kommentaren von Neerav und John Eckman angegeben wurde. Der obige Code spiegelt jetzt die Empfehlung von Stephen Harris wider.


Schritt 3 (optional) Wechseln Sie zu GitHub

Die Verwendung von Git hat den Vorteil, dass Sie auf einfache Weise eine Version Ihres Plug-Ins auf GitHub verwalten können. Dadurch ist Ihr Plug-In für andere Entwickler zugänglicher, die Verbesserungen vorschlagen oder sogar eigene Änderungen vornehmen können, die Sie in Ihr eigenes Repository übernehmen könnten. Wenn Sie bereits mit GitHub eingerichtet sind, möchten Sie möglicherweise Ihr Plug-In auf Ihr Konto verschieben. Erstellen Sie dazu zunächst ein neues Repository in Ihrem GitHub-Konto und fügen Sie dieses als Remote-Zweig Ihrem lokalen Repository hinzu:

 git remote add origin [email protected]:/.git

'dein Benutzername'bezieht sich auf Ihren GitHub-Benutzernamen und'Ihr Repo-Name'bezieht sich auf den Namen des Repositorys, das Sie in GitHub erstellt haben. Dann pushen Sie einfach Ihr lokales Repository:

 git Push Ursprungsmaster

Schritt 4 Bearbeiten des Plug-Ins: Überblick über den Workflow

Wir werden einen neuen Zweig "Arbeit" schaffen. In diesem Zweig werden wir unser Plug-In ändern, Änderungen vornehmen und Funktionen hinzufügen usw. Dies bedeutet, dass sich unser 'Master'-Zweig in seinem ursprünglichen Zustand befindet. Dadurch können wir zurück zum Master-Zweig wechseln und wieder verzweigen. Angenommen, es liegt ein schwerwiegender Fehler in Ihrem Plug-In vor, während Sie an neuen Funktionen in Ihrem Zweig arbeiten. Sie können zurück zu Ihrem 'Master'-Zweig wechseln (der keine der Funktionen enthält, an denen Sie gerade arbeiten), einen Fix für den Fehler festlegen und diesen dann in das WordPress-Repository verschieben. Sie können dann wieder zu Ihrem Arbeitszweig wechseln und dort weitermachen, wo Sie aufgehört haben. (Hinweis: Git erstellt keine Kopien Ihrer Dateien - in Ihrem lokalen Ordner befindet sich immer nur eine Gruppe von Dateien. Was diese Dateien enthalten, hängt davon ab, in welchem ​​Zweig Sie sich befinden.)

Tatsächlich ist es eine gute Idee, für jedes neue Feature, das Sie Ihrem Plug-In hinzufügen, einen Zweig zu erstellen. Wenn Sie fertig sind, führen Sie diese einfach wieder in den Master-Zweig ein. Wenn dies zu „Konflikten“ führt, werden Sie aufgefordert, diese manuell zu lösen.

Erstellen Sie zuerst einen Zweig namens "Arbeit":

 Git Zweigarbeit

Dann "check out" (gehe zu) Zweig "Arbeit":

 git checkout arbeiten

In einer Nachricht erfahren Sie, dass Sie zum Zweig 'Arbeit' gewechselt sind. Verwenden Sie jetzt Ihren bevorzugten Texteditor, um die Dateien des Plug-Ins in Ihrem lokalen Ordner zu öffnen (oder erstellen Sie sie, falls noch keine vorhanden sind). Nachdem Sie einige erstellt haben, möchten Sie möglicherweise sehen, welche Dateien Sie geändert haben. Sie tun dies mit dem einfachen Befehl:

 Git-Status

Dadurch werden Änderungen von angezeigt verfolgt und untracked Dateien. Möglicherweise gibt es Dateien, die Git nicht stört (z. B. temporäre Dateien). Wenn Sie dem Ordner jedoch neue Dateien hinzugefügt haben, müssen Sie Git diese mitteilen. Sie können dies mit dem Befehl tun:

 git add 

Ich habe zwei Dateien erstelltpost-type-archive-links.php' und 'metabox.js'in meinem lokalen Ordner, also habe ich sie hinzugefügt, damit Git sie aufspüren kann. Sie müssen sicherstellen, dass Sie Ihre Daten verfolgen Readme Datei.

Sie können auch die Änderungen seit Ihrem letzten Commit anzeigen (hier ist ein GUI-Programm sehr praktisch)

 git diff

Wenn Sie die Änderungen in Ihr lokales Repository übernehmen möchten:

 git commit -a -m "Abc in xyz"

Bereitstellung eines (detailliert) Meldung der im Commit enthaltenen Änderungen.

Bei der Durchführung von Änderungen können (und sollten) Sie so oft wie möglich festlegen - jedoch auf logische Weise, vorzugsweise mit einem Commit für jedes "Ding", das Sie tun. Sie sollten auch sicherstellen, dass Ihre Commits keine offensichtlichen Fehler enthalten. 'Einen Commit rückgängig machen' ist schnell und problemlos: Sie tun dies, indem Sie einen weiteren Commit ausführen, der den vorherigen rückgängig macht:

 git kehrt HEAD zurück

(Sie werden aufgefordert, eine Nachricht zur Beschreibung dieses Commits anzugeben.)


Schritt 5 Einstieg in das WordPress-Repository

Angenommen, Sie befinden sich jetzt in einer Position, in der Sie alle Änderungen in das SVN-Repository übernehmen möchten. Bevor wir dies tun, müssen wir uns etwas vor Augen halten. Git ermutigt Sie, sich häufig zu verpflichten, und es ist eine gute Praxis, dies zu tun… für Entwicklung. Ihr WordPress-Plugin-Repository ist jedoch dafür da Verteilung. Es braucht nicht jedes Commit. Tatsächlich tut es wirklich nicht wollen Es ist auch, als Otto (WordPress-Kernmitarbeiter) warnt:

"Wenn ich Sie dabei erwische [jedes Commit separat drückt], dann werde ich Sie von WordPress.org verbannen. Für den SVN ist nur Ihre endgültige Arbeitsversion erforderlich, nicht die gesamte Geschichte der Hunderte von Änderungen, die Sie mit Git vorgenommen haben. Reduzieren Sie Ihre Änderungen zu einem einzigen Commit. "

Um dies zu vermeiden, führen wir alle Commits zu einem Commit zusammen, wenn wir bereit sind, zum WordPress-Repository zu pushen. Dafür gibt es mehrere Möglichkeiten. Wir werden unsere Veränderungen aus unserem Arbeitszweig in unseren Hauptzweig einbinden (und gleichzeitig zerquetschen). Dann erscheinen alle unsere Änderungen als ein Commit für den Master-Zweig. Dann löschen wir den Arbeitszweig und schieben den Masterzweig in den SVN-Trunk unseres Plug-Ins.

Zunächst wollen wir zurück zum Master-Zweig wechseln:

 Git Checkout-Master

Squash und mischen Sie die Arbeitszweigänderungen in den Master ein:

 git merge --squash work

Wenn Änderungen am Master-Zweig vorgenommen wurden, kann es zu Konflikten bei der Zusammenführung kommen. Sie werden aufgefordert, diese Konflikte manuell zu lösen, bevor die Zusammenführung abgeschlossen werden kann. Nach dem Zusammenführen übernehmen Sie die Änderungen (dieses Commit enthält alle Commits aus unserem Arbeitszweig):

 git commit -a -m "Änderungen vorgenommen a, b, c, d"

Zum Schluss löschen wir den Arbeitszweig

 Git-Zweig -D Arbeit

Wenn Sie mehrere Zweige zusammenführen möchten, können Sie dies für jeden Zweig tun. Es gibt alternative Methoden, die ich nicht behandeln werde, um Ihren Verlauf zu glätten (z. B. interaktive Umbasierung)..

An diesem Punkt könnten Sie, wenn Sie wollten, Ihre letzten Änderungen in Ihr GitHub-Konto übernehmen:

 git push -u Ursprungsmeister

Um zum WordPress-Repository zu gelangen, stellen wir zunächst sicher, dass unser lokales Repository auf dem neuesten Stand ist:

 git svn rebase

Git holt dann Ihr Subversion-Repository ab und führt dort alle Änderungen mit den gerade vorgenommenen Änderungen zusammen. Normalerweise sollten keine Änderungen am WordPress-Repository vorgenommen werden. Daher sollte die folgende Meldung angezeigt werden: Aktueller Zweigmaster ist auf dem neuesten Stand.

Jetzt können wir unsere Änderungen in das WordPress-Repository verschieben

 git svn dcommit

Git fordert Sie möglicherweise auf, Ihre WordPress.org-Anmeldeinformationen einzugeben. Nach der Eingabe werden Ihre Änderungen in das WordPress-Repository übernommen. In Kürze sollten Sie eine E-Mail vom WordPress-Repository erhalten, in der Sie über die Commits informiert werden.


Schritt 6 Neue Version kennzeichnen

Derzeit befinden sich diese Änderungen im Kofferraum. Was ist, wenn wir eine neue Version unseres Plug-Ins mit Tags versehen möchten? Wenn Sie die nächste Version für Ihr Plug-In erstellen, sollten Sie die ReadMe-Datei aktualisiert haben, sodass das Stable-Tag auf Ihre neue Version verweist (beispielsweise '2.0'). Sie sollten auch die Header-Informationen Ihres Plug-Ins in Ihrem aktualisiert haben Ihr-Plugin-Name.php Datei. Wenn Sie dies vergessen haben, führen Sie einfach die oben beschriebene Prozedur durch, nachdem Sie diese Änderungen vorgenommen haben.

Sobald Ihr "Trunk" vollständig auf dem neuesten Stand ist (einschließlich der neuesten Versionsinformationen), müssen Sie einfach das neue Tag im WordPress-Repository erstellen:

 git svn tag "2.0"

Dies kopiert alles in Ihren Kofferraum Tags / 2,0 (was Sie normalerweise in SVN mit erreichen svn cp trunk tags / 2.0).

Wenn Sie das Release in Ihrem lokalen Repository mit einem Tag versehen möchten:

 git tag -a 2.0 -m "Tagging 2.0"

Schritt 7 (Optional) Kennzeichnen einer neuen Version auf GitHub

Vergewissern Sie sich ähnlich wie beim WordPress-Repository, dass unsere Repositorys übereinstimmen, und drücken Sie dann unsere Änderungen und Tags:

 git pull --rebase ursprung master git push ursprung master git push ursprung --tags

Nützliche Ressourcen für Git-Befehle

  • Git-Referenz (hat einen guten Abschnitt über "Wie man sich wie Git denkt")
  • Git Community-Buch
  • Pro Git Buch
  • Git Ready (weniger Anleitung, eher eine 'Schnipsel'-Sammlung)
  • SVN-zu-Git-Absturzkurs (hilfreich, wenn Sie SVN für eine Weile verwendet haben)
  • Git Magic (eine freundliche Einführung in Git)

Schließlich gibt es ein paar Git-Spickzettel, die sich als nützlich erweisen können: hier und hier.


GUI-Git-Programme

Windows

  • TortoiseGit (ein beliebtes Programm, das sich gut in den Windows Explorer integrieren lässt)
  • msysgit

Mac

  • Git Tower
  • GitHub für Mac (von denen, die GitHub geholt haben)

Linux / Cross-Plattform

  • GitG (das ist was ich benutze)
  • QGit
  • Git Cola (Cross Platform)