Dezvoltați un plugin pe GitHub, iar acum sunteți gata să îl implementați în WordPress.org ... uh-oh, dezvoltarea plugin-ului WordPress.org se face prin SVN. Acum ce? Nu-ți face griji, există un scenariu pentru asta.
Recent am fost în curs de dezvoltare un plugin pentru WordPress pe care am vrut să-l eliberez în directorul plugin WordPress.org. Prefer sa folosesc Git ca software-ul meu de control al versiunilor in aceste zile (am obisnuit sa folosesc SVN), dar directorul plugin-ului foloseste SVN. Din fericire, există un script frumos disponibil pe GitHub, numit "Github în WordPress Plugin Deployment Directory Script", pentru a permite dezvoltării mele cu Git și apoi să fiu implementat direct la depozitul SVN pe WordPress.org când sunt pregătit să lansez cea mai recentă versiune.
Această versiune a scenariului este de la Ben Balter, care a fost învinsă de un scenariu asemănător de Brent Shepherd, care a fost rupt de un scenariu de Dean Clatworthy. Fiecare dintre ele a făcut diferite îmbunătățiri față de cel anterior și am găsit rezultatul final a fi cu adevărat util.
Mi-am creat propria fereastră a acestui script pe care o folosesc, deci are numele meu de utilizator SVN.
#! / bin / bash # # Script pentru a implementa de la Github la WordPress.org Plugin Repository # O modificare a scriptului de implementare al lui Dean Clatworthy, așa cum se găsește aici: https://github.com/deanc/wordpress-plugin-git-svn # Diferența este că acest script trăiește în plugin-ul lui git repo și nu necesită un SVN repo deja existent. # Sursa: https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh #prompt pentru plugin slug echo -e "Plugin Slug: \ c" citește PLUGINSLUG # main config, plugin plugin CURRENTDIR = "pwd" CURRENTDIR = "$ CURRENTDIR / $ PLUGINSLUG" MAINFILE = "$ PLUGINSLUG.php" # aceasta ar trebui să fie numele principalului fișier php din pluginul wordpress # git config GITPATH = "$ CURRENTDIR / acest fișier ar trebui să se afle în baza magaziei dvs. git # svn config SVNPATH = "/ tmp / $ PLUGINSLUG" # cale către un SVN repo temp. Nu este nevoie de o lovitură laterală și nu adăugați portbagaj. SVNURL = "http://plugins.svn.wordpress.org/$PLUGINSLUG/" # SVN repo de la distanță pe WordPress.org, cu nici o slash înclinată SVNUSER = "benbalter" # numele tău svn # Să începem ... echo "..." echo echo "Pregătirea pentru implementarea pluginului WordPress" echo echo "..." echo # Verificați versiunea în readme.txt este aceeași ca fișierul plugin NEWVERSION1 = "grep" ^ Etichetă stabilă "$ GITPATH / readme.txt" awk -F " "echo" readme versiune: $ NEWVERSION1 "NEWVERSION2 =" grep "^ Versiune" $ GITPATH / $ MAINFILE | awk -F "print $ 2" echo "$ MAINFILE versiune: $ NEWVERSION2" dacă ["$ NEWVERSION1"! = "$ NEWVERSION2"]; apoi echo "Versiunile nu se potrivesc. Ieșirea ..."; ieșirea 1; fi echo "Versiunile se potrivesc în fișierul readme.txt și fișierul PHP. Să procedăm ..." cd $ GITPATH echo -e "Introduceți un mesaj de comitet pentru această nouă versiune: \ c" citiți COMMITMSG git commit -am "$ COMMITMSG" echo " versiunea în git "git tag -a" $ NEWVERSION1 "-m" Versiunea de etichetare $ NEWVERSION1 "echo" Apăsând ultima comitere la origine, cu etichete "git push origin master git push master de origine --tags echo echo" Crearea copiei locale SVN repo ... "svn co $ SVNURL $ SVNPATH echo" ignorarea fișierelor specifice și a scriptului de implementare "svn propset svn: ignore" deploy.sh README.md .git .gitignore "" SVNPATH / trunk / "#export git -> SVN echo "Exportarea HEAD a masterului de la git la trunchiul SVN", există un checkout-index -a -f -prefix = $ SVNPATH / trunk / #if există un submodul, verifică recursiv indicele lor dacă [-f ".gitmodules"] apoi echo "Exportul HEAD al fiecărui submodul din git în portbagajul SVN" git submodul init git submodul actualizare git submodule foreach - recursiv 'git checkout-index -a -f -prefix = $ SVNPA TH / trunk / $ path / 'ech echo' Schimbarea directorului în SVN și comiterea la trunchi "cd $ SVNPATH / trunk / # Adăugarea tuturor fișierelor noi care nu sunt setate să fie ignorate svn status | grep -v "^. [\ t] * \ ... *" grep "^?" | awk 'print $ 2' | xrgs svn adăugați svn commit --username = $ SVNUSER -m "$ COMMITMSG" echo "Crearea noii etichete SVN și comiterea acesteia" cd $ SVNPATH svn copie trunchi / tags / $ NEWVERSION1 / cd $ SVNPATH / tags / $ NEWVERSION1 svn commit - -username = $ SVNUSER -m "Versiune de etichetare $ NEWVERSION1" echo "Înlăturarea directorului temporar $ SVNPATH" rm -fr $ SVNPATH / echo "*** FIN ***"
Folosesc acest scenariu prin faptul că am ședința în mine / Wp-content / plugins / director. Atunci când sunt gata să depalez unul dintre pluginurile mele, de la terminal, alerg ./deploy.sh
. Apoi, script-ul mă solicită pentru slugul plugin-ului meu, pe care îl furnizez. Verifică dacă versiunea pluginului se potrivește cu versiunea "Stable" din pluginul meu readme.txt, și apoi se îndreaptă spre afacerea pe care o desfășoară.
În esență, scriptul face următorii pași:
Asta e! Ei bine, există și alte câteva lucruri, cum ar fi verificarea recursivă, astfel încât să susțină și submodulele etc., dar aceasta este esența ei.
se bucura!