Sugerencia rápida Implementar un complemento de Git a WordPress.org

Está desarrollando un complemento en GitHub, y ahora está listo para implementarlo en WordPress.org ... uh-oh, el desarrollo del complemento de WordPress.org se realiza a través de SVN. ¿Ahora que? No te preocupes, hay un guión para eso..

Recientemente he estado desarrollando un complemento para WordPress que quería lanzar en el directorio de complementos de WordPress.org. Prefiero usar Git como mi software de control de versiones en estos días (solía usar SVN), pero el directorio de complementos usa SVN. Afortunadamente, hay un buen script disponible en GitHub llamado "Github to WordPress Plugin Directory Deployment Script" que me permite desarrollar con Git, y luego implementarlo directamente en el repositorio SVN en WordPress.org cuando esté listo para lanzar la última versión..

Esta versión del guión es de Ben Balter, que fue bifurcada de un guión similar de Brent Shepherd, que fue bifurcada de un guión de Dean Clatworthy. Cada uno de ellos ha realizado varias mejoras en el anterior y he encontrado que el resultado final es realmente útil..

He creado mi propia bifurcación de este script que uso, por lo que tiene mi nombre de usuario SVN.


La secuencia de comandos

 #! / bin / bash # # Script para implementar desde Github a WordPress.org Repositorio de complementos # Una modificación del script de implementación de Dean Clatworthy como se encuentra aquí: https://github.com/deanc/wordpress-plugin-git-svn # La diferencia es que este script se encuentra en el repositorio git del plugin y no requiere un repositorio SVN existente. # Fuente: https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh #prompt for plugin echo eco -e "Plugin Slug: \ c" lea PLUGINSLUG # configuración principal, desactiva plugin slug CURRENTDIR = "pwd" CURRENTDIR = "$ CURRENTDIR / $ PLUGINSLUG" MAINFILE = "$ PLUGINSLUG.php" # este debe ser el nombre de su archivo php principal en el complemento wordpress # git config GITPATH ​​= "$ CURRENTDIR /" # este archivo debe estar en la base de su repositorio git # svn config SVNPATH = "/ tmp / $ PLUGINSLUG" # ruta a un repositorio temporal de SVN. No se requieren barras diagonales y no se agrega un tronco. SVNURL = "http://plugins.svn.wordpress.org/$PLUGINSLUG/" # Repo SVN remoto en WordPress.org, sin barra diagonal SVNUSER = "benbalter" # su nombre de usuario svn # Comencemos ... echo "..." echo echo "Preparándose para implementar el plugin de WordPress" echo echo "..." echo # Revisar versión en readme.txt es lo mismo que el archivo de plugin NEWVERSION1 = "grep" ^ Etiqueta estable "$ GITPATH ​​/ readme.txt | awk -F" imprimir $ 3  versión "readme" de "echo": $ NEWVERSION1 "NEWVERSION2 =" grep "^ Version" $ GITPATH ​​/ $ MAINFILE | awk -F "print $ 2" echo "$ MAINFILE versión: $ NEWVERSION2" if ["$ NEWVERSION1"! = "$ NEWVERSION2"]; luego echo "Las versiones no coinciden. Saliendo ..."; salida 1; fi echo "Las versiones coinciden en el archivo readme.txt y PHP. Continuemos ..." cd $ GITPATH ​​echo -e "Ingrese un mensaje de confirmación para esta nueva versión: \ c" lea COMMITMSG git commit -am "$ COMMITMSG" echo "Etiquetando nuevo versión en git "git tag -a" $ NEWVERSION1 "-m" Tagging versión $ NEWVERSION1 "echo" Empujando el último compromiso al origen, con etiquetas "git push origin master git push origin master --tags echo echo" Creando una copia local de SVN repo ... "svn co $ SVNURL $ SVNPATH echo" Ignorando los archivos específicos de github y el script de implementación "svn propset svn: ignore" deploy.sh README.md .git .gitignore "" $ SVNPATH / trunk / "#export git -> SVN echo "Exportando el HEAD de maestro desde git al troncal de SVN" git checkout-index -a -f --prefix = $ SVNPATH / trunk / # si existe un submódulo, revisa recursivamente sus índices si [-f ".gitmodules"] luego haga eco en "Exportando el HEAD de cada submódulo desde git al tronco de SVN" git submódulo init git submódulo actualización git submódulo foreach --recursivo 'git checkout-index -a -f --prefix = $ SVNPA TH / trunk / $ path / 'fi echo "Cambiando el directorio a SVN y confirmando a trunk" cd $ SVNPATH / trunk / # Agregar todos los archivos nuevos que no están configurados para ser ignorados svn status | grep -v "^. [\ t] * \… *" | grep "^?" | awk 'print $ 2' | xargs svn add svn commit --username = $ SVNUSER -m "$ COMMITMSG" echo "Creando una nueva etiqueta SVN y confirmándola" cd $ SVNPATH svn copy trunk / tags / $ NEWVERSION1 / cd $ SVNPATH / tags / $ NEWVERSION1 svn commit - -username = $ SVNUSER -m "Versión de etiquetado $ NEWVERSION1" echo "Eliminando el directorio temporal $ SVNPATH" rm -fr $ SVNPATH / echo "*** FIN ***"

Uso

Yo uso este script al tenerlo sentado en mi / wp-content / plugins / directorio. Luego, cuando esté listo para ejecutar uno de mis complementos, desde la Terminal, ejecuto ./deploy.sh. La secuencia de comandos luego me solicita el código de mi complemento, que proporciono. Comprueba que la versión del complemento coincida con la versión "estable" en mi complemento readme.txt, y luego va sobre su negocio haciendo el despliegue.


Qué es lo que hace?

En esencia, el script realiza los siguientes pasos:

  1. Crea un etiqueta para la versión de lanzamiento en su repositorio Git
  2. Crea una verificación SVN temporal del repositorio de su complemento desde WordPress.org
  3. Exporta los contenidos de su repositorio Git al repositorio SVN
  4. Confirma estos cambios en el repositorio SVN.
  5. Crea una etiqueta en el repositorio SVN y confirma que
  6. Elimina la verificación SVN temporal de su máquina de desarrollo

¡Eso es! Bueno, hay algunas otras cosas allí, como la comprobación recursiva, por lo que también soporta submódulos, etc., pero ese es el punto crucial..

Disfrutar!