2010-01-28 6 views
11

Ho un progetto ruby ​​e l'host e la porta del database potrebbero essere diversi su dev e production. Ho bisogno di un modo per ottenere valori diversi per quelli nei miei script per i due ambienti.Come posso tracciare i file di configurazione specifici del sistema in un repository/progetto?

Il progetto dovrebbe essere completo, quindi è necessario specificare un modo per specificare i valori predefiniti. Non voglio che a un clone manchino i file di configurazione. Quindi ignorarli completamente non funzionerà.

Come si risolve questo problema con git?

+0

erm, mantenere un ramo e unire "principale" in rami "produzione" e "sviluppo"? Questo potrebbe essere fatto (semi) -automaticamente da topgit (forse anche stgit) –

risposta

19

mi consiglia di utilizzare:

  • un file di modello di configurazione (un file con nome di variabile al posto del valore di host e port)
  • uno script in grado di sostituire i nomi di variabili con i valori appropriati a seconda sull'ambiente (rilevato dallo script)

La soluzione Git è quindi un git attribute filter driver (vedere anche GitPro book).

Un driver di filtro è costituito da un comando clean e un comando smudge, uno dei quali può essere lasciato non specificato.
Su, quando viene specificato il comando smudge, il comando viene alimentato dall'oggetto blob dal suo input standard e il suo output standard viene utilizzato per aggiornare il file di worktree.
Analogamente, il comando clean viene utilizzato per convertire il contenuto del file worktree al momento del check-in.

In questo modo, lo script (gestito con Git) a cui fa riferimento la macchia può sostituire tutte le variabili dai valori specifici environement, mentre lo script pulito ripristina il suo contenuto in un file di configurazione intatto.

clean smudge

Quando si verifica il tuo repo Git su un ambiente prod, il processo di macchia produrrà un file di configurazione prod-come nel albero di lavoro risultante.

+0

Sembra che il link al libro GitPro punti in un posto sbagliato. Probabilmente nella versione attuale i numeri dei capitoli sono stati cambiati. – jutky

+0

@jutky Grazie. Ho aggiornato il collegamento. – VonC

Problemi correlati