El flujo de trabajo de Git para un CMS

Tenemos un sistema CMS, y actualmente con este flujo de trabajo:

  • Tenemos un repository github para todo el CMS
  • Cada twig representa un website, y la twig principal es donde desarrollamos nuevas funciones, esto tiene varias ventajas (podemos comparar los sitios, la actualización de la versión es solo una fusión, las versiones de CMS son mantenibles)
  • También almacenamos las carpetas específicas del sitio en git, porque el control de versiones también es necesario para estas carpetas.

Mi primera pregunta es, ¿cuál es tu opinión sobre este flujo de trabajo? ¿Es una manera totalmente incorrecta?

Pero tenemos algunos problemas con este flujo de trabajo.

  • Cuando estamos actualizando una nueva versión con una fusión de git (maestro -> sitio), las carpetas específicas del sitio también se fusionan, no solo los files CMS centrales. Puedo Revertir / Restablecer después de la fusión (y antes de la confirmación), pero no es mi solución favorita, es un poco complicada.
  • A veces desarrollamos una nueva característica para un sitio, y cuando termina, la fusionamos con el maestro, para una nueva versión posterior. En este caso, después de fusionar la actualización de la versión, podemos ver todas las confirmaciones específicas del sitio en el historial de git. Sé que así es como funciona Git, es solo un pequeño problema, pero un poco molesto.

Tengo algunos planes para resolverlo después de leer SO:

  • Repositorio separado para los files CMS principales y las carpetas específicas del sitio
  • Solución de submodule Git: aún no está claro para mí, pero tal vez sea una solución mejor
  • Jugando con el file .gitattributes, y con la configuration "merge = ours" para la carpeta específica del sitio, pero si sé bien, esto funciona solo cuando la fusión tiene un conflicto en el directory dado.
  • ¿Otro?

¿Cuáles son sus sugerencias para este caso? Espero que la situación sea clara para ti. Gracias por la ayuda 🙂

Adán

Separate repository for the core CMS files, and the site specific folders.

Esto es lo que deberías estar haciendo, ya que tu historial de git se beneficiaría de la separación.

Haría un repository diferente para cada uno y haré que use su marco

Tu flujo de trabajo ahora:

 W2 <- M -> W1 | D 

D – Desarrollo, M – Máster, W – Página web

Flujo de trabajo propuesto:

 W2 M W1 | | | D1 D2 D3 

Donde cada website tomaría M aster como una herramienta, no un git repo.