Nuestra Universidad proporciona alojamiento web a los departamentos del campus en los servidores que administramos. La instalación de programas de código abierto de terceros requiere modificar los permisos de los archivos y el código en el programa antes de que se ejecute. (Estamos usando suEXEC, si está familiarizado)git workflow para mantener actualizado el software de código abierto modificado a la medida?
Actualmente ofrecemos WordPress a través de un script de instalación. El usuario carga la última versión estable y ejecuta una secuencia de comandos PHP en el servidor a través de SSH. Este script PHP modifica los permisos de archivos de todos los archivos/carpetas, agrega/elimina algunos códigos en varios archivos y crea algunos archivos nuevos. Este script de instalador es un acto de equilibrio engorroso cuando se lanza una nueva versión estable.
Quiero comenzar a usar el control de versiones (específicamente git) para rastrear nuestros cambios personalizados en lugar de confiar en un script para realizar los cambios, pero no estoy seguro del flujo de trabajo que utilizará. Estoy familiarizado con la bifurcación y la fusión, pero no estoy seguro de cómo integrar nuestros viejos cambios cuando se emite una nueva versión.
¿Cuál debería ser mi flujo de trabajo de git para integrar los nuevos cambios desde el núcleo de WordPress, pero también preservar nuestros cambios personalizados más antiguos?
Recomendaría no hacerlo, ya que el rebase puede causar muchos problemas. Se pierde la historia (no se puede volver a una versión que ya se había implementado anteriormente, ni se puede saber cuándo se fusionó), y tener la rama de trabajo actualizada todo el tiempo hace que sea mucho más difícil para usted colaborar con otras personas, ya que ahora también tendrán que volver a basar todo lo que hacen. La rebase es algo que es mejor para los cambios que aún no se han compartido con nadie más, o que se sabe que son volátiles, no para volver a basar todo su historial en un flujo ascendente cada vez que hay una nueva versión. –
Rebase puede causar problemas si no se comunica, pero es totalmente manejable. La historia solo se pierde si no mantienes una referencia a la confirmación, simplemente marca la versión implementada y no perderás nada. – dahlbyk
En nuestro caso, el rebasado parece ser una buena solución ya que solo compartimos la fuente como tarball. Ningún otro desarrollador que utilice el producto final está realizando cambios en el núcleo como nosotros, por lo que no es necesario compartirlo con otros. –