2010-07-13 15 views
6

Ho un'applicazione Ruby on Rails che sto cercando di ospitare su Heroku. Vorrei anche utilizzare un repository pubblico (gratuito) GitHub per tenere traccia delle modifiche. Devo effettuare il check-in di un file contenente password per il repository remoto di Heroku, ma ignoro il file, quindi non lo controllo su GitHub. C'è un modo per aggiungere il file a un repository e ignorarlo da un altro?Git: Come ignorare un file da un repository e aggiungerlo a un altro?

Aggiornamento: Ho scoperto come risolvere il mio problema immediato di memorizzazione delle password in Heroku utilizzando Heroku Config vars. Tuttavia, sono ancora interessato al concetto di spingere un file solo su repository specifici.

+0

Non ho familiarità con Heroku, ma non potevi semplicemente copiare manualmente il file sul server Heroku e lasciarlo completamente fuori dal controllo della versione? –

+0

per "distribuire" su Heroku, si aggiunge il repository git Heroku come telecomando e si esegue "git push heroku master" per inviare le modifiche a Heroku. Quindi, è necessario effettuare il check-in per inviare il file a Heroku. (o almeno questa è la mia comprensione) – Andrew

risposta

1

cosa si potrebbe fare è quello di aggiungere il GitHub Repo uno script sbavature (filter driver) che sarà:

  • prova per la esistente di un ramo privato
  • checkout il file delle password da quel ramo

alt text

Da quel ramo privato avrebbe esistere solo sul repo Heroku, lo script macchia woul non fare nulla sul lato repo GitHub.
Ma una volta spinto sul lato di Heroku, se un hook sta eseguendo il checkout di una directory di lavoro sul server Heroku, lo stesso driver di filtro eseguirà il kicking e genererà il file sensibile.

Detto questo, è meglio per un file così sensibile a mai essere versione in qualsiasi repository Git, ma piuttosto essere memorizzati altrove.
Lo script sfumatura, piuttosto che testare alcuni contenuti di repository Git (come un ramo privato), testerebbe quindi un repository esterno (un ftp ssh, un repository Nexus, qualsiasi altro riferimento ai dati là fuori dove hai scelto di memorizzare quelle informazioni private) , estrai il giusto contenuto e genera il file.

+0

Questa risposta spiega come utilizzare semplicemente un ramo privato di heroku: http://stackoverflow.com/questions/3221657/how-can-i-upload-my-application-to-github- ma-remove-sensitive-authorization-info/3223543 # 3223543 – igorw

+1

@ evil3: Capisco, ma non mi fido di una soluzione che implichi "non spingere mai il ramo xxx per repo yyy". Funzionerà bene, fino a quel giorno ... dove è spinto comunque (per errore). Sono davvero più a mio agio con qualsiasi tipo di informazione sensibile * al di fuori * di qualsiasi repo Git. – VonC

2

Come menzionato da VonC, la scommessa migliore (e meno incline all'errore) consiste nel mantenere informazioni sensibili di configurazione da Git e inserirle in variabili d'ambiente sul server. Ecco le istruzioni su come farlo su Heroku:

http://docs.heroku.com/config-vars

puoi anche consultare le domande collegate.

Problemi correlati