Durante meses, he estado tratando de planificar una buena estructura de proyecto para usar el control de versiones git para el desarrollo de sitios web de WordPress que no sacrifique la capacidad de actualizar el núcleo y los complementos a través del panel de control de WP, no requiere una estructura de directorio no convencional (wp -contenido fuera de la carpeta principal de WP) y eso es fácil de administrar e implementar sitios web completos. He leído sobre submódulos, subárboles, repositorios anidados, etc., y todavía me resulta difícil adaptarlo todo y elegir la estrategia correcta.
Esto es lo que estoy pensando ahora, con mis pensamientos sobre cómo manejaría los repositorios de git entre paréntesis.
root (main project repo)
|-- wordpress (public git repo added as subtree)
| |-- wp-content
| | |-- plugins
| | | |-- my-custom-plugin (git repo added as subtree)
| | | |-- other-plugin-with-git-repo (git repo added as subtree)
| | | +-- other-plugin-without-git-repo (ignored/untracked)
| | |-- themes
| | | |-- my-custom-theme (git repo added as subtree)
| | | |-- other-theme-with-git-repo (git repo added as subtree)
| | | +-- other-theme-without-git-repo (ignored/untracked)
| | +-- uploads (ignored/untracked)
| |-- wp-admin
| +-- wp-includes
|-- wp-config.php (ignored/untracked)
+-- other-files.txt
Esto me deja con varios problemas / preguntas;
Actualizaciones automáticas; Me encanta la nueva función de actualizaciones automáticas, potencialmente podría ahorrar mucho tiempo y esfuerzo para mantener mis sitios actualizados y seguros, pero parece que es un obstáculo en el seguimiento de los cambios de código con git. ¿Hay alguna forma de rastrear los cambios en mi código y al mismo tiempo permitir que el núcleo de WordPress se actualice automáticamente?
¿Tener subárboles bajo el repositorio principal de WordPress me impide usar git para fusionarme en nuevas actualizaciones principales o enviar mis cambios al repositorio principal de WordPress (si alguna vez decido que me gustaría ser un contribuidor principal)?
Para los complementos que no tienen un repositorio público de git, ignorarlos completamente crea el problema de no poder clonar rápidamente todo el sitio en un nuevo servidor sin copiar manualmente los archivos en el servidor. También causa un problema si quiero hacer cambios en el código de ese complemento, esos cambios no se rastrean y podrían perderse fácilmente en una actualización del complemento.
Entonces, para resumir, ¿cuál es una buena configuración de git + WordPress que evita estos problemas? Agradecería sus comentarios sobre la estructura de mi proyecto propuesto. ¡Cualquier forma en que me puedan ayudar a mejorar esto sería muy apreciada!
PD: si hay un mejor foro para esta discusión, indíqueme allí.
fuente
install.php
rutina personalizada o algo así y usar la mecánica de actualización normal desde allí. Composer stack puede manejar las actualizaciones muy bien en abstracto, pero se basa en la calidad de los paquetes que usa y cosas como la representación de repositorios oficiales de WP porque aún no es bastante madura.Puede echar un vistazo a este problema y este problema.
También eche un vistazo a los archivos README en cada repositorio también:
Basado en los repositorios anteriores, como otro ejemplo de una configuración de Git / WP, creé esto . Opté por usar enlaces simbólicos para los temas (trato de cubrir eso en mi README ).
Sin embargo, estoy un poco en el mismo barco con las actualizaciones automáticas ... Mi plan era actualizar manualmente el submódulo WP cuando ocurrieran las actualizaciones. Creo que la alternativa es, en teoría (todavía no me he probado), dejar que el submódulo se actualice solo para actualizaciones menores (hay una configuración de WP para esto) y luego hacer un
git
forzado / reinicio del submódulo cuando salen actualizaciones importantes ( tal vez una de las respuestas aquí podría ser de alguna ayuda ... por supuesto, creo, uno querría apuntar a una etiqueta WP específica al actualizar a la próxima versión principal).Una cosa a tener en cuenta es que si WP ve
.git
en la (s) ruta (s), desactivará automáticamente las actualizaciones automáticas. Para más información, ver:Otros enlaces relacionados:
Actualización de mayo de 2015
He creado esta cesión temporal , que es una forma rápida para que empiece a proyectos de WordPress. Mi último enfoque es solo controlar la versión de los temas. En otras palabras, instalo WP localmente (usando la configuración en el repositorio mencionado anteriormente) y en producción, luego modifico el archivo de configuración en cada sistema y
git
extraigo mis temas para obtener un sitio funcional.fuente
Este tipo de desarrollo cae en "no es tan fácil y requiere un flujo de trabajo personalizado que podría llevar mucho tiempo".
Encuentro subárboles, submódulos o repositorios anidados, un gran dolor en el culo.
Algunos pensamientos (rastrear todo).
add_filter( 'auto_upgrade_ignore_checkout_status', '__return_true' );
Método seguro a través de confirmaciones manuales + correo electrónico:
Puede usar un servidor de ensayo y notificaciones de actualización por correo electrónico para usted, confirmar las actualizaciones y enviar al servidor en vivo que tiene las actualizaciones automáticas desactivadas.
Esto también le permite copiar / pegar carpetas para sus propios repositorios a voluntad, que a menudo es como lo hago. También facilita la clonación / destrucción de múltiples servidores de ensayo, git realmente entra en vigor con este método ya que se distribuye.
La desventaja: copiar / pegar carpetas, administración.
Método automático
Configure un script de compilación (Phing, Ant, Bash, Capistrano, etc.) y algún código personalizado que haga un git add + commit cuando se aplique una actualización y la envíe al servidor en vivo. También puede separar complementos / repositorios de temas y luego hacer que el script compile / mueva / lo que sea, y / o use Composer en la mezcla.
Automatizar un flujo de trabajo como este también tiende a ser inflexible y solo vale la pena si ve una necesidad real del tiempo invertido.
La desventaja: inflexible, lleva tiempo crear.
Git no debe usarse para copias de seguridad y, en general, no es necesario que clones el historial de confirmación de WP.
fuente
Después de pensarlo un poco más, ya que definitivamente quiero aprovechar las actualizaciones nativas de WP para ahorrarme trabajo de campo, no tiene sentido rastrear nada de lo que WP actualizará usando git. Aquí hay una idea revisada.
Por supuesto, luego pierdo la capacidad de rastrear qué complementos y temas son parte del proyecto desde el VCS, pero realmente solo lo necesito para propósitos de respaldo, y de todos modos usaré algún tipo de sistema de respaldo regular.
Por lo tanto, lo único que realmente me falta es la capacidad de implementar fácilmente toda la pila en diferentes servidores sin usar FTP para copiar manualmente todo. Alguien tiene alguna idea sobre eso?
fuente
Ok, viendo la charla de Mark Jaquith aquí , tal vez estoy en el camino equivocado. Aquí hay otra puñalada que rastrea todo.
Supongo que el principal inconveniente de esto es tener un directorio de contenido personalizado, lo que me ha causado problemas en el pasado con complementos y temas mal escritos que no pueden encontrar el directorio de contenido.
fuente