La risposta breve alla tua domanda è Sì .
Non esiterei a raccomandare Git (o qualsiasi altro software di controllo della versione) per tenere traccia dei file di configurazione. Da allora, sono stato più produttivo (in particolare per la configurazione di nuove installazioni) e ho maggiore fiducia nei miei file di configurazione. Con il controllo della versione, ho una registrazione di cosa sono state apportate modifiche e il messaggio di commit fornisce il motivo perché la modifica è stata effettuata. Se una modifica ha effetti collaterali indesiderati, posso facilmente esaminare il registro/la cronologia per vedere quale modifica ha causato gli effetti.
Personalmente, diffiderei nel tenere traccia di tutti i file sotto /
root directory. L'elenco dei percorsi da ignorare potrebbe diventare lungo e ingombrante. Preferisco mantenere ogni set logico di file nel proprio repository.
Uso manualmente Git per tenere traccia del mio personale file di configurazione/avvio, ad esempio configurazione Vim, funzioni Bash, alias, ecc. – simile all'approccio elencato in Come tenere traccia di $HOME con git. Conservo ogni set di file nel proprio repository e utilizzo collegamenti simbolici alla home directory.
Per sistema di configurazione, utilizzo Git con Etckeeper per tenere traccia dei file nel mio /etc
cartella.
Svantaggi
Un problema a cui prestare attenzione è se i file monitorati includono hard link . Quando Git viene utilizzato per estrarre i file o modificare in altro modo l'albero di lavoro, scollega i file e quindi li ricrea. Vedi Git, Dotfiles e Hardlinks per una spiegazione più completa.
Ecckeeper
Etckeeper può essere utilizzato per mantenere una cronologia completa delle modifiche apportate a /etc. Tiene traccia dei metadati dei file che i sistemi di controllo delle revisioni normalmente non supportano, ma questo è importante per /etc
, come le autorizzazioni di /etc/shadow
.
Si collega a gestori di pacchetti come apt e yum e (nella sua configurazione predefinita), esegue pre e post installazione in modo che tutte le modifiche a /etc
sono monitorati.
Se un pacchetto viene installato o rimosso, tutte le modifiche senza commit in /etc verranno salvate prima dell'operazione del pacchetto in modo che ci siano due commit:
- "salvataggio delle modifiche non salvate in /etc prima dell'esecuzione di yum"
- "commettere le modifiche in /etc dopo l'esecuzione di yum"
L'ho usato con distribuzioni basate su Debian e Red Hat e so che supporta la gestione dei pacchetti Arch. Non posso dire quanta automazione aggiungerebbe a un sistema Gentoo, ma è disponibile un pacchetto per questo.
Supporta anche il push dei file di configurazione in un repository remoto (che dovrebbe, ovviamente, essere privato).
Configurazione
Dopo aver installato il pacchetto potrebbe essere necessario configurarlo (/etc/etckeeper/etckeeper.conf
), ad esempio, sui sistemi Ubuntu il sistema di controllo della versione predefinito viene modificato da Git a Bazaar. Potresti anche voler disabilitare gli commit automatici giornalieri .
Autocommit giornalieri
Le modifiche possono essere salvate automaticamente da un cron job giornaliero . Questo può essere fastidioso poiché il repository può essere ingombrato da più messaggi di commit automatici.
Rimuovo il commento dalla riga appropriata in /etc/etckeeper/etckeeper.conf
:
sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf
Ignora determinati file
Modifica /etc/.gitignore
per specificare eventuali file che non devono essere tracciati.
Prima esecuzione
Dopo la configurazione, esegui i seguenti comandi:
sudo etckeeper init
sudo etckeeper commit "Initial commit"
Se la tua directory corrente è etc
, puoi eseguire il normale git
comandi, ad esempio,
sudo git status
sudo git log
Uso git per tenere traccia di aree specifiche della mia home directory. Personalmente, non percorrerei il percorso del tracciamento della directory principale, ma devo dire che ammiro la tua ambizione. :)
Forse questa raccolta di esperienze potrebbe darti un'idea migliore di cosa potresti fare:
effetti dell'inizializzazione del repository git sulla directory root 3 di Linux:)
Ci scusiamo per una "risposta", invece di inserire semplicemente il collegamento in un commento; tuttavia, rappresentante insufficiente, ma desidero intervenire.
Modifica
Oh! Risposta molto bella di @AnthonyGeoghegan. Credo che questa non sia tanto una lotta come l'avevo originariamente immaginata.