2010-01-28 18 views
11

Tengo un proyecto de ruby, y el host y el puerto de la base de datos pueden ser diferentes en desarrollo y producción. Necesito una forma de obtener diferentes valores para aquellos en mis scripts para los dos entornos.¿Cómo puedo rastrear los archivos de configuración específicos del sistema en un repositorio/proyecto?

El proyecto debe estar completo, por lo que debe haber alguna manera de especificar los valores predeterminados. No quiero que un clon falte los archivos de configuración. Por lo tanto, ignorarlos por completo no funcionará.

¿Cómo resuelves este problema con git?

+0

erm, mantener una rama y fusionar 'principal' en 'producción' y 'desarrollo' ramas? Esto podría hacerse (semi) automáticamente por topgit (posiblemente stgit también) –

Respuesta

19

yo recomendaría usar:

  • un archivo de plantilla de configuración (un archivo con nombre de variable en lugar del valor de host y el puerto)
  • un script capaz de sustituir a los nombres de las variables con los valores apropiados dependiendo en el entorno (detectado por el script)

La solución de Git es entonces una git attribute filter driver (véase también GitPro book).

un controlador de filtro se compone de un comando clean y un comando smudge, cualquiera de los cuales puede ser dejado sin especificar.
En checkout, cuando se especifica el comando smudge, el comando se alimenta del objeto blob desde su entrada estándar, y su salida estándar se utiliza para actualizar el archivo worktree.
De forma similar, el comando clean se usa para convertir los contenidos del archivo worktree en el momento del check-in.

De esa manera, la secuencia de comandos (gestionado con Git) que hace referencia la mancha puede reemplazar todas las variables de entorno de los valores-específico, mientras que el guión limpio restablecerá su contenido a un archivo de configuración sin tocar.

clean smudge

cuando checkout tu repositorio Git en un entorno de producción, el proceso mancha producirá un archivo de configuración prod-como en el árbol de trabajo resultante.

+0

Parece que el enlace al libro de GitPro apunta a un lugar equivocado. Posiblemente en la edición actual, los números de capítulo han sido cambiados. – jutky

+0

@jutky Gracias. He actualizado el enlace. – VonC

Cuestiones relacionadas