Kurztipp Bereitstellen eines Plugins Von Git für WordPress.org

Sie entwickeln ein Plugin für GitHub, und jetzt können Sie es für WordPress.org bereitstellen ... äh-oh, die Entwicklung des Plugins für WordPress.org erfolgt über SVN. Was jetzt? Keine Sorge, dafür gibt es ein Skript.

Vor kurzem habe ich ein Plugin für WordPress entwickelt, das ich im Plugin-Verzeichnis von WordPress.org veröffentlichen wollte. Ich ziehe es vor, Git heutzutage als Versionskontrollsoftware zu verwenden (ich habe früher SVN verwendet), aber das Plugin-Verzeichnis verwendet SVN. Glücklicherweise gibt es auf GitHub ein schönes Skript namens "Github to WordPress Plugin Directory Deployment Script", mit dem ich mit Git entwickeln und dann direkt im SVN-Repository auf WordPress.org bereitstellen kann, wenn ich bereit bin, die neueste Version zu veröffentlichen.

Diese Version des Drehbuchs stammt von Ben Balter, das von einem ähnlichen Skript von Brent Shepherd und einem Skript von Dean Clatworthy abgeleitet wurde. Jeder von ihnen hat gegenüber dem vorherigen verschiedene Verbesserungen vorgenommen, und ich habe das Endergebnis als sehr nützlich empfunden.

Ich habe meinen eigenen Fork dieses Skripts erstellt, das ich verwende, also hat es meinen SVN-Benutzernamen.


Das Skript

 #! / bin / bash # # Skript zum Bereitstellen von Github in WordPress.org Plugin Repository # Eine Modifikation des Dean Clatworthy-Bereitstellungsskripts, wie hier zu finden: https://github.com/deanc/wordpress-plugin-git-svn # Der Unterschied ist dass dieses Skript im git-Repo des Plugins lebt und kein vorhandenes SVN-Repo benötigt. # Source: https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh #prompt für Plugin-Slug-Echo -e "Plugin-Slug: \ c" lesen Sie PLUGINSLUG # main config ab plugin slug CURRENTDIR = "pwd" CURRENTDIR = "$ CURRENTDIR / $ PLUGINSLUG" MAINFILE = "$ PLUGINSLUG.php" # Dies sollte der Name Ihrer Haupt-PHP-Datei im Wordpress-Plugin # git config GITPATH ​​= "$ CURRENTDIR /" sein. Diese Datei sollte sich in der Basis Ihres Git-Repositorys # svn config befinden. SVNPATH = "/ tmp / $ PLUGINSLUG" # Pfad zu einem temporären SVN-Repo. Kein abschließender Schrägstrich erforderlich und kein Stamm hinzufügen. SVNURL = "http://plugins.svn.wordpress.org/$PLUGINSLUG/" # Remote-SVN-Repo auf WordPress.org, ohne nachstehenden Schrägstrich SVNUSER = "benbalter" # Ihr svn-Benutzername # Beginnen wir ... echo "..." echo echo "Vorbereiten der Bereitstellung des WordPress-Plugins" echo echo "…" echo # Die Version in readme.txt prüfen entspricht der Plugin-Datei NEWVERSION1 = "grep" ^ Stabiler Tag "$ GITPATH ​​/ readme.txt | awk -F" print $ 3  Readme-Version "echo": $ NEWVERSION1 "NEWVERSION2 =" grep "^ Version" $ GITPATH ​​/ $ MAINFILE | awk -F "print $ 2" echo "$ MAINFILE-Version: $ NEWVERSION2" if ["$ NEWVERSION1"! = "$ NEWVERSION2"]; dann echo "Versionen stimmen nicht überein. Beenden ..."; Ausfahrt 1; fi echo "Versionen stimmen in readme.txt und PHP-Datei überein. Los geht's ..." cd $ GITPATH ​​echo -e "Geben Sie eine Commit-Nachricht für diese neue Version ein: \ c" read COMMITMSG git commit -am "$ COMMITMSG" echo "Markieren neu Version in git "git tag -a" $ NEWVERSION1 "-m" Tagging-Version $ NEWVERSION1 "echo" Schieben des neuesten Commits an den Ursprung, mit Tags "git push Ursprung master git push Ursprung master --tags echo echo" Erstellen einer lokalen Kopie des SVN repo… "svn co $ SVNURL $ SVNPATH echo" Github-spezifische Dateien und Implementierungsskript ignorieren "svn propset svn: ignore" deploy.sh README.md .git .gitignore "" $ SVNPATH / trunk / "#export git -> SVN echo Msgstr "Den HEAD of master von git in den Trunk von SVN exportieren" git checkout-index -a -f --prefix = $ SVNPATH / trunk / #if Submodul existieren, überprüfen Sie deren Indizes rekursiv, wenn [-f ".gitmodules"] Dann echo "Exportieren des HEAD jedes Submoduls von git in den Trunk des SVN" git submodule init git submodule update git submodul für alle --recursive 'git checkout-index -a -f --prefix = $ SVNPA TH / trunk / $ path / 'fi echo "Verzeichnis in SVN ändern und in Trunk festlegen" cd $ SVNPATH / trunk / # Fügen Sie alle neuen Dateien hinzu, die nicht als ignoriert gelten sollen. Svn status | grep -v "^. [\ t] * \… *" | grep "^?" | awk 'print $ 2' | xargs svn add svn commit --username = $ SVNUSER -m "$ COMMITMSG" echo "Erstellen eines neuen SVN-Tags und Festschreiben" cd $ SVNPATH svn copy trunk / tags / $ NEWVERSION1 / cd $ SVNPATH / tags / $ NEWVERSION1 svn commit - -username = $ SVNUSER -m Tagging-Version $ NEWVERSION1 echo Entfernen des temporären Verzeichnisses $ SVNPATH rm -fr $ SVNPATH / echo *** FIN ***

Verwendungszweck

Ich benutze dieses Skript, indem ich es in meinem sitze / wp-content / plugins / Verzeichnis. Wenn ich dann bereit bin, eines meiner Plugins vom Terminal aus zu verwenden, starte ich ./deploy.sh. Das Skript fordert mich dann auf, den Slug meines Plugins zu erhalten, das ich zur Verfügung stelle. Es wird geprüft, ob die Plugin-Version mit der "Stable" -Version in meinem Plugin übereinstimmt readme.txt, und dann geht es darum, dass das Geschäft die Bereitstellung übernimmt.


Was macht es eigentlich??

Im Wesentlichen führt das Skript die folgenden Schritte aus:

  1. Erzeugt eine Etikett für die Release-Version in Ihrem Git-Repository
  2. Erstellt eine temporäre SVN-Überprüfung des Repositorys Ihres Plugins von WordPress.org
  3. Exportiert den Inhalt Ihres Git-Repositorys in das SVN-Repository
  4. Überträgt diese Änderungen in das SVN-Repository
  5. Erzeugt ein Tag im SVN-Repository und schreibt das fest
  6. Entfernt die temporäre SVN-Überprüfung von Ihrem Entwicklungscomputer

Das ist es! Nun, es gibt ein paar andere Dinge, wie rekursives Auschecken, so dass auch Submodule usw. unterstützt werden, aber das ist der springende Punkt.

Genießen!