Usamos git para la mayoría de las aplicaciones web que creamos en nuestra tienda, y aunque las aplicaciones usan una variedad de tecnologías (PHP, Rails, etc.), generalmente tenemos una puesta en escena y producción servidor para cada sitio. Normalmente, estos servidores tienen diferentes conjuntos de credenciales de base de datos, así como diferentes configuraciones de configuración basadas en el entorno (por ejemplo, almacenamiento en caché). Nuestro flujo de trabajo generalmente implica el mantenimiento de dos ramas de git por proyecto: maestro, que refleja el servidor de producción, y organización, que refleja la puesta en escena. Las nuevas características se desarrollan en etapas (o una sub-bifurcación) y se fusionan de nuevo a maestro una vez finalizado e implementado.Git: configuración de la aplicación y diferentes entornos
Mi pregunta es con respecto a la mejor manera de mantener los archivos de configuración que son específicos de rama y entorno. He visto las respuestas de las preguntas similares here y here, y ninguna de las dos me satisface. Los dos enfoques principales parecen ser: a) usar la exclusión de .gitignore para dejar los archivos de configuración fuera del ámbito de git, o b) escribir un código reflexivo y respetuoso con el entorno que determine, p. qué credenciales de base de datos usar en base al nombre de host. Mi problema con a) es que solo permite que exista un conjunto de archivos de configuración en la base de código (independientemente de la rama actual), por lo que los archivos de configuración del otro entorno se pierden. b), por otro lado, simplemente parece requerir una modificación innecesaria de la base de código de una manera que no se siente relacionada con la funcionalidad de la aplicación.
Idealmente, me gustaría una forma de "bloquear" los archivos de configuración dentro de una determinada rama, de modo que cada vez que obtengo el master, obtengo los archivos de configuración maestra, y cada vez que pago, obtengo los archivos de configuración provisional. Además, fusionar la transición al maestro no debería afectar los archivos de configuración maestra de ninguna manera. Hasta la fecha, hemos solucionado esto al tener carpetas que contienen archivos de configuración específicos del entorno fuera de la raíz de git y mover manualmente los archivos apropiados a la base de código durante la implementación, pero esto es, por supuesto, innecesariamente peligroso (y potencialmente peligroso).
¿Hay alguna manera de lograr esto usando git?
Gracias por su atención!
¿http://stackoverflow.com/questions/2154948/how-can-i-track-system-config-files-in-a-repo-project/2155355#2155355 combinado con http: // stackoverflow .com/questions/3207575/how-do-i-open-source-my-rails-apps-without-giving-away-the-apps-secret-keys-and/3207608 # 3207608 ayuda aquí? – VonC