Pregunta

En Git, ¿cómo puedo organizar el trabajo para rastrear los archivos de configuración locales de una biblioteca, que es un submódulo git?

En detalles:

la biblioteca tiene archivos normales que se rastrean, y archivos de configuración predeterminados que están en su carpeta, pero no rastreados, para evitar restablecerlos o sobrescribirlos (están listados en .gitignore). Todos los archivos están en la carpeta o subcarpetas de lib.

Comencé a rastrear uno de los proyectos, que usan esta lib, también en Git. Ahora hay un dilema:

  • si hago que la lib en este proyecto sea un submódulo, no podré rastrear los archivos de configuración (Git los ignorará, ya que están en la carpeta del submódulo).

  • rastrear todo como un gran proyecto es una mala idea, según tengo entendido.

  • si do sigo los archivos de configuración en la biblioteca, ¿cómo puedo evitar restablecerlos a los valores predeterminados? ¿Debo hacer una rama en el proyecto de trabajo y extraer del maestro cada vez? Entonces, ¿qué pasa si edito la biblioteca y un archivo de configuración? Esto debe causar un conflicto de fusión, ¿no?

Supongo que esto no es nuevo, pero no pude encontrar ningún consejo. Apreciaré aprender de su experiencia chicos.

¿Fue útil?

Solución

¿rastrea su archivo de configuración en el directorio principal del proyecto y coloca un enlace simbólico en el subdirectorio de la biblioteca?

git add lib.conf
ln -s ../lib.conf lib/

¿o me pierdo algo?

Otros consejos

Al usar un submódulo, debe evitar realizar cualquier modificación debido al contenedor (aquí: el proyecto que usa la lib), porque creará una nueva revisión en el historial del submódulo.

Sería posible, por ejemplo, para la biblioteca, hacer referencia a los archivos de configuración template que pueden ser la base para:

  • generación de archivos de configuración de valor predeterminado (la lib tiene un archivo de valor predeterminado archivado, que puede usarse para generar un archivo de configuración completo pero no rastreado)
  • o una generación de archivo de configuración personalizada (el proyecto tiene sus propios valores de archivo de configuración, y lo usa para generar en el mismo lugar dentro de la biblioteca un archivo de configuración no rastreado)

Una plantilla de archivo de configuración con valores tokenizados y un script que transforma ese archivo config.template en un archivo de configuración privado (e ignorado) es el enfoque que sugerí en este Pregunta SO sobre la gestión de fusión .

Se pueden encontrar otros consejos más generales sobre archivos de configuración en este Pregunta SO .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top