Manejo de diferentes configuraciones con git

Estoy haciendo un proyecto de Laravel 4, y hay una opción en mail.pjp, donde puedes pretender enviar un correo electrónico, pero en realidad estás registrando localmente en un file. Esto es útil para el desarrollo.

El problema que tengo es con el control de versiones. Si ingreso esta opción como "verdadera", entonces me arriesgo a que cuando actualice el server de producción, pueda deshabilitar los correos electrónicos si no soy cuidadoso.

Por otro lado, si reviso el file en git como "verdadero", podría suceder lo que sucedió hoy, que perdí un par de horas tratando de entender por qué el correo no funcionaba porque olvidé que tenía que cambiar esto opción para mi entorno de desarrollo.

¿De qué manera podría manejar estos problemas de configuration de "producción versus desarrollo" con git?

Tener una twig para cada configuration.

Por ejemplo, podría tener una twig de production y una twig de desarrollo.

En la twig de production , solo haga que uno se comprometa a cambiar el file de configuration, luego use la twig de desarrollo de la misma forma que usó su twig master .

El process de implementación se convierte

En desarrollo:

  • producción de pago de git
  • git merge dev
  • producción de git push origen

En producción:

  • producción de origen de git pull

O divide tu file de configuration

Y tal vez agregar alguna testing de time de ejecución para elegir la buena en el momento adecuado.

Tengo un problema similar y uso la siguiente solución que puede ser un poco pesada pero funciona bien para separar datos 'privados' de un proyecto público.

La idea es no colocar tu file de configuration en tu repository de git normal, sino en uno privado. Idealmente, le gustaría que el repository privado sea un submodule del público, pero tiene que hacerlo de otra manera (para ocultar el repository privado del público).

Para esto, creo un repository private que contiene mi file de configuration. luego creo un submodule que contiene el public y agrego un enlace al file de configuration.

La estructura del directory se ve así:

 private + (private git repo) | +- config.conf | +- public + (public git repo) | + config -> ../config.conf | + src 

Luego tengo un devel y una twig de production en el repository privado con las dos versiones del file de configuration. Pero nunca realmente toco ese directory.

Cuando llega un nuevo desarrollador, simplemente bifurca la twig de desarrollo y las obras dentro del público como si no hubiera un proyecto general. Simplemente tira de empuje como siempre.

Cuando necesite implementar, simplemente vaya a la máquina de producción y actualice el submodule public . Si necesita actualizar el file de configuration de producción, simplemente actualícelo en la máquina de producción y empújelo. Alternativamente, puede cambiar localmente a la twig de production , hacer los cambios necesarios y enviarlos al server de producción.

Espero que esté claro.