2010-03-16 12 views
23

¿Hay una manera simple de configurar diferentes archivos .gitignore para diferentes controles remotos? Tengo un repositorio que presiono tanto a Heroku como a Github. Necesito database.yml para Heroku, pero no quiero que parte de la información se envíe a Github. Por lo tanto, necesito un archivo .gitignore diferente para cada uno de los controles remotos.¿Hay alguna manera de configurar .gitignores específicos a distancia?

Intenté tener dos ramas separadas, una que ignora database.yml, y otra que no. El problema es que cuando pago la rama heroku y regreso a mi rama github, todo el archivo database.yml se ha ido.

¿Algún consejo?

+0

FunkyMunky, ¿encontró una buena solución para su problema? –

Respuesta

5

No sé nada acerca de los requisitos para Heroku; esperemos que Justice tenga razón y simplemente puede evitar el problema. Si no puede, o si alguien más encuentra esto que no puede ...

Si desea que los dos controles remotos sean mirrors (tienen los mismos commits), deben por definición tener los mismos archivos en esos commits . Por lo tanto, tiene dos opciones: tener file-for-repo-B en todos los repositorios, incluso si no lo necesitan, o usar un flujo de trabajo ligeramente desordenado con dos ramas: master y for-repo-B. La única diferencia entre las dos ramas sería los commits tocando file-for-repo-B; la rama for-repo-B siempre se fusionaría desde master (¡pero nunca al revés!). Ahora solo tienes una rama diferente revisada en el repositorio B, y todo está bien.

10

No coloque la información de la base de datos en database.yml. En su lugar, usa las variables de entorno de Heroku.

+0

Esta regla se aplica a cualquier otro entorno de producción, no solo a heroku. –

1

Debe versionned a:

  • database.yml con sólo las variables en ella, y
  • un script capaz de sustituir las variables por los valores correctos en función del servidor remoto en el que se despliega database.yml.

a continuación, utiliza la secuencia de comandos como un smudge attribute filter driver:

smudge content filter

Cada vez que va a la comprobación (y crear un árbol de trabajo) en un servidor remoto, el script se ejecuta y va a cambiar las variables en consecuencia, dándole un archivo personalizado database.yml.
Si uno de los controles remotos no necesita ese archivo database.yml, aún puede estar allí, pero vaciado por el script de borrones.

Cuestiones relacionadas