2010-03-16 9 views
23

C'è un modo semplice per impostare diversi file .gitignore per diversi telecomandi? Ho un repository che spingo sia ad Heroku che a Github. Ho bisogno di database.yml per Heroku, ma non voglio che alcune informazioni vengano inviate a Github. Quindi ho bisogno di un diverso file .gitignore per ciascuno dei telecomandi.C'è un modo per configurare .gitignores specifici per remoto?

Ho provato ad avere due rami separati, uno che ignora database.yml e uno che non lo fa. Il problema è che quando eseguo il checkout del ramo heroku e torno nel mio ramo github, l'intero file database.yml è scomparso.

Qualche consiglio?

+0

FunkyMunky, hai trovato una buona soluzione per il tuo problema? –

risposta

5

Non so nulla dei requisiti per Heroku - si spera che Giustizia abbia ragione e si possa semplicemente evitare il problema. Se non puoi, o se qualcun altro trova questo che non può ...

Se vuoi che i due telecomandi siano specchi (hanno gli stessi commit), per definizione devono avere gli stessi file in quelli che commettono . Quindi, hai due scelte: avere file-for-repo-B in tutti i repository, anche se non ne hanno bisogno, o usare un flusso di lavoro leggermente disordinato con due rami: master e for-repo-B. L'unica differenza tra i due rami sarebbe il commit toccando file-for-repo-B; il ramo for-repo-B si fonderebbe sempre da master (ma mai viceversa!). Ora avete appena controllato un ramo diverso nel repository B, e tutto va bene.

10

Non inserire le informazioni del database in database.yml. Invece, usa le variabili d'ambiente Heroku.

+0

Questa regola si applica a qualsiasi altro ambiente di produzione, non solo a heroku. –

1

Si dovrebbe versionned un:

  • database.yml con solo le variabili in essa, e
  • uno script in grado di sostituire quelle variabili dai valori giusti a seconda del server remoto in cui che database.yml viene distribuito.

quindi si utilizza lo script come smudge attribute filter driver:

smudge content filter

Ogni volta che si verifica (e creare un albero di lavoro) su un server remoto, lo script viene eseguito e cambierà le variabili di conseguenza, dandoti un file personalizzato database.yml.
Se uno dei telecomandi non ha bisogno del file database.yml, può ancora essere lì, ma svuotato dallo script sbavature.

Problemi correlati