Proyecto Git Workflow para WordPress

El problema

Configuración de un flujo de trabajo de Git para un sitio de WordPress, con las siguientes twigs:

  • master (usa la versión estable de WordPress)
  • production (sitio en vivo)
  • bleeding (usa la última confirmación de WordPress disponible en GitHub)

con los siguientes controles remotos:

  • bitbucket (privado)
  • wpe-staging
  • wpe-production

El objective es desarrollar y probar el tema y los complementos del sitio en la próxima versión de WordPress, pero no quiero complicar demasiado mi flujo de trabajo actual.

Fondo

El repository actual del sitio tiene las siguientes twigs:

  • master (versión estable de WP)
  • production (sitio en vivo)

y los mismos controles remotos que arriba.

Mi flujo de trabajo actual funciona muy bien. Puedo desarrollar nuevas funciones en mi versión estable local de WordPress (twig master ), enviar la twig master a wpe-staging , confirmar que las cosas funcionen en ese entorno, luego fusionar la twig master en la twig de production y enviar a wpe-production remota. Esto me permite hacer cambios rápidos en el sitio de producción si soy mobile y mantener el trabajo que he estado haciendo localmente lejos de la producción.

El sitio está alojado en WP Engine, lo que ha impulsado a Git: production ramificaciones de staging y production y los controles remotos hacen reference a sus respectivos códigos y URL en el alojamiento de WP Engine. Todas las sucursales utilizan el file .gitignore recomendado, disponible aquí: https://wpengine.com/wp-content/uploads/2013/10/recommended-gitignore-no-wp.txt

Necesito poder rastrear toda la installation de WP, ya que hay files en el directory raíz de WP que son rastreados, confirmados y enviados.

Lo que he intentado

  • repository separado del directory wp-content ( repo-wpcontent ) agregado como submodule a repo-project : parece que funcionaría, pero parece desorderado con los submods dentro de un submod (plugins)
  • repository separado del directory tema ( repo-theme ) agregado como submodule a repo-project : esto parece incluso más simple que el anterior, pero estoy nervioso acerca de rastrear plugins y el tema en repositorys separados (de nuevo, parece desorderado)

Nombres

  • repo-project : repository del directory completo de WordPress
  • repo-wpcontent : repository del directory wp-content
  • repo-theme : repository del único tema de WordPress que se está desarrollando y probando

La pregunta

En function de su experiencia y conocimiento, ¿cuál es la mejor configuration para que pueda probar el tema y los complementos instalados tanto en las versiones estables como en las versiones de última generación de WordPress, con la capacidad de editar el código dentro de uno y pasar esos cambios al ¿otro? No estoy loco por tener todos los compromisos para el desarrollo de WordPress combinados con mis compromisos de proyecto, pero entiendo si eso es inevitable.

Gracias por tu ayuda.

Actualización: ahora (aparentemente) he creado un repository que funciona; Creé las siguientes twigs:

  • theme : solo sigue el tema
  • master : realiza un seguimiento de la installation de WordPress (sin include los files del núcleo), con la twig del theme agregada como un submodule (empuja al control remoto de wpe-staging )
  • production : realiza un seguimiento de la installation de WordPress (sin include los files del núcleo), con la twig del theme agregada como un submodule (empuja a wpe-production remota)
  • stable : versión estable de WordPress con los files core rastreados, con la twig de theme agregada como un submodule
  • bleeding : la versión más reciente de WordPress con los files centrales rastreados, con la twig del theme agregada como un submodule

Como el theme se agrega como un submodule a todas las twigs, todos los cambios que realice en una twig se pueden pasar a todas las twigs. Esto es más simple (para mí) que tener un repository completamente separado para rastrear el tema.

¿Es esta una manera adecuada de lograr mi objective, una que puede durar sin conflictos, o estoy pidiendo problemas?