Abbiamo migrato molto codice sorgente su git e siamo molto soddisfatti della nostra soluzione attuale. Vorremmo avere i nostri file di configurazione del server aggiornati sullo stesso sistema, ma ci sono alcune cose che non funzionano come vorremmo e spero che qualcuno possa condividere la sua esperienza qui.
Questa domanda è simile all'utilizzo del controllo di revisione per i file di configurazione del server? , ma abbiamo alcuni requisiti speciali che non funzionano con i suggerimenti su quella domanda.
L'impostazione corrente utilizza la sovversione per i file di configurazione. Il repository corrispondente è simile a questo
/ # root del repository + - www.domain.com/ # configuration per www | \--eccetera/ | \ - apache2 / + - dev.domain.com/ # configuration per dev | + - etc / | \--optare/ | \ - app1 / | \ - conf / # configuration per app1 su dev \ - staging.domain.com/ # configurazione per la stadiazione
Con Subversion questo funzionerebbe perfettamente, perché è possibile effettuare il checkout di una sottodirectory di un repository. Inoltre è possibile utilizzare svn: externals per puntare a una struttura comune per diverse configurazioni di configurazione. Dovevamo solo gestire i file .svn in tutte le directory con versione. Git d'altra parte non ha svn: gli esterni e i checkout sparsi richiedono sempre che il percorso dalla radice alla directory effettiva sia lo stesso.
Quando ho discusso della migrazione a git, ho provato a scrivere i requisiti principali per il controllo delle versioni della configurazione del server:
- vogliamo solo un singolo repository
- dovrebbe essere possibile inviare facilmente le modifiche al telecomando centrale
- i changeset dovrebbero contenere il vero autore
C'è un buon modo per avere tutta la configurazione in un repository e avere un sotto-percorso come copia funzionante? Attualmente sto prendendo in considerazione due approcci, ma prima ho voluto porre questa domanda
- Se il repository .git si trova in una posizione fissa, ad es. Da qualche parte in / var , potremmo collegarci al sotto-percorso dalla directory di lavoro "target". Il problema principale: non saprei un modo per "collegare" da / etc a un'altra directory al fine di importare solo i contenuti, tranne il collegamento simbolico di singoli file
- Ho trovato un'altra alternativa su questa domanda SO , suggerendo di avere più rami in un repository. Ciò aumenterebbe sicuramente la complessità, ma potrei vederci provare in questo modo.
L'uso di git su una singola macchina per la gestione dei file di configurazione funziona bene, ma credo che ci debba essere qualcuno che lo sta usando nel modo in cui vorremmo usarlo.
Grazie
Kariem
/
causa delle autorizzazioni di scrittura.