Tengo un repositorio Git en el que todo mi código está en la rama maestra, y anteriormente solo ignoraba todos los archivos de Drupal, por lo que mantuve una separación estricta entre el código que escribí (o modifiqué o podría modificar) y el código eso podría generarse con Drush o lo que sea.
Esto parecía una buena estrategia hasta que tuve que actualizar Drupal. Me di cuenta de que quiero poder retroceder si las cosas salieron mal, y qué mejor herramienta para usar que Git para hacerlo. Pensé que esta sería la situación perfecta para una bifurcación de características, así que hice una drupal-7.14
bifurcación, di la suya .gitignore
para ignorar todos mis archivos de código y configuración y prestar atención solo a los archivos que son parte de la instalación de Drupal, lo cual no haría. No se conmove. Realicé una actualización a mano (descargar, descomprimir, descomprimir, copiar), clasificando casos límite como robots.txt y .htaccess, y sobrescribiendo el .gitignore de Drupal con el mío. Arreglé algunas configuraciones que funcionaban con 7.14 pero no con 7.15, para recuperarme de un error 500, y luego todo parecía perfecto. Cambié el nombre de la sucursal drupal-7.15
y estaba a punto de seguir felizmente mi camino.
Hasta que me di cuenta de lo que había hecho inadvertidamente: los archivos que mi rama maestra no había rastreado anteriormente pero que se dejaron en el directorio de trabajo ahora se eliminaron del directorio de trabajo cuando desprotegí la maestra, ¡ya que ya no eran archivos sin seguimiento! D'oh!
Si fusiono la drupal-7.15
rama con master, perderé la separación del código.
Probablemente haya alguna forma de convertir una rama en un submódulo. Suponiendo que sea posible, esa podría ser la mejor estrategia. Antes de hacer esto, sabía que los submódulos eran la solución "correcta", pero como no me di cuenta del efecto secundario del uso de ramas para archivos previamente no rastreados, decidí cortar las esquinas e ir por esa ruta. (Además, todos los enfoques que he visto para usar submódulos con Drupal suponen que está comenzando un nuevo proyecto y Drupal será la rama maestra. No es deseable que convierta el código de otra persona en la rama maestra, y ya tenía un repositorio con una rama maestra. Esto parecía que sería innecesariamente complicado hacer una actualización).
Puede haber alguna otra solución en la que no haya pensado.
¿Cómo puedo recuperarme mejor de esto con la menor cantidad posible de desventajas?
ACTUALIZACIÓN : Esto está en desarrollo (en una máquina virtual Linux en mi computadora portátil) y aún no se ha pasado a producción. Para cuando empecemos la producción, planeo tener todo envuelto en módulos de funciones, pero eso aún no está implementado.
ACTUALIZACIÓN 2 : los submódulos pueden no funcionar. Según Pro Git , "los submódulos le permiten mantener un repositorio de Git como subdirectorio de otro repositorio de Git". Drupal no proporciona una separación tan agradable. En lugar de que todo el código de Drupal esté en un subdirectorio, la relación está más o menos invertida, pero todavía no hay una separación limpia, ya que puede estar editando su .htaccess y robots.txt, por lo que su código y el repositorio de Drupal se mezclan. Estoy buscando una solución a este problema .