C'è un modo per impostazione .gitignores remote-specifici?
Domanda
C'è un modo semplice di regolare diverse file .gitignore per diversi telecomandi? Ho un repository spingo fino a sia Heroku e Github. Ho bisogno database.yml per Heroku, ma non voglio alcune delle informazioni per essere spinto fino a Github. Quindi ho bisogno di un file .gitignore diverso per ciascuno dei telecomandi.
Ho provato avente due rami distinti, uno che ignora database.yml, e uno che non lo fa. Il problema è che quando ho checkout il ramo Heroku e torno nel mio ramo GitHub, l'intero file database.yml è andato.
Qualche consiglio?
Soluzione
Non so nulla circa i requisiti per Heroku - si spera giustizia è giusto e si può semplicemente evitare il problema. Se non è possibile, o se qualcun altro trova questo che non possono ...
Se si desidera che i due telecomandi per essere specchi (hanno gli stessi commit), essi devono, per definizione, avere gli stessi file in queste commit. Quindi, si hanno due scelte: sono file-for-repo-B
in tutti i repository, anche se non ne hanno bisogno, o utilizzare un flusso di lavoro un po 'disordinato con due rami: master
e for-repo-B
. L'unica differenza tra i due rami sarebbe l'impegna toccano file-for-repo-B
; la for-repo-B
ramo sarebbe sempre merge da master
(ma mai il contrario!). Ora non resta che un ramo diverso verificato in pronti contro termine B, e tutto è buono.
Altri suggerimenti
Non inserire le informazioni del database in database.yml. Invece, utilizzare variabili di ambiente Heroku.
Si dovrebbe versionned una:
-
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 viene distribuito che
database.yml
.
Quindi si utilizza lo script come un sbavature driver di filtro attributo :
Ogni volta che si sarà checkout (e creare un albero di lavoro) su un server remoto, lo script viene eseguito e cambierà le variabili di conseguenza, dando un file database.yml
personalizzato.
Se una delle remote non ha bisogno di quel file database.yml
, può ancora esserci, ma svuotato dallo script sbavature.