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 quali modifiche sono state apportate e il messaggio di commit fornisce il motivo per cui è stata apportata la modifica. Se una modifica ha effetti collaterali indesiderati, posso facilmente rivedere il registro / la cronologia per vedere quale modifica ha causato gli effetti.
Personalmente, diffiderei di tenere traccia di tutti i file nella /
directory principale. L'elenco dei percorsi da ignorare potrebbe diventare ampio e ingombrante. Preferisco tenere ogni set logico di file nel proprio repository.
Uso manualmente Git per tenere traccia della mia configurazione personale / file di avvio, ad es. Configurazione di Vim, funzioni di Bash, alias, ecc. - simile all'approccio elencato in Come tenere traccia di $ HOME con git . Tengo ogni set di file nel proprio repository e utilizzo i collegamenti simbolici alla home directory.
Per i file di configurazione del sistema , utilizzo Git con Etckeeper per tenere traccia dei file nella mia /etc
directory.
svantaggi
Un problema di cui diffidare è se i file tracciati includono collegamenti reali . Quando Git viene utilizzato per estrarre file o modificare in altro modo l'albero di lavoro, scollega i file e li ricrea . Vedi Git, Dotfile e Hardlink per una spiegazione più completa.
etckeeper
Etckeeper può essere utilizzato per mantenere una cronologia completa delle modifiche apportate a / etc. Tiene traccia dei metadati dei file che normalmente i sistemi di controllo delle revisioni non supportano, ma per cui è importante /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 da tenere /etc
traccia di tutte le modifiche .
Se un pacchetto viene installato o rimosso, tutte le modifiche non confermate in / etc verranno eseguite prima dell'operazione del pacchetto in modo che vi siano due commit:
- "Salvataggio delle modifiche non confermate in / etc prima dell'esecuzione di yum"
- "Commit delle modifiche in / etc dopo yum run"
L'ho usato con le 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, ovviamente, dovrebbe essere privato).
Configurazione
Dopo aver installato il pacchetto potrebbe essere necessario configurarlo ( /etc/etckeeper/etckeeper.conf
), ad es. Sui sistemi Ubuntu il sistema di controllo della versione predefinito viene cambiato da Git a Bazaar. Ti potrebbe piacere anche disabilitare i commit automatici giornalieri .
Automommit giornalieri
Le modifiche possono essere salvate automaticamente da un cron job giornaliero . Questo può essere fastidioso poiché il repository può essere ingombro di più messaggi di commit automatici.
Ho decommentato la riga appropriata in /etc/etckeeper/etckeeper.conf
:
sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf
Ignora alcuni file
Modifica /etc/.gitignore
per specificare tutti i file che non devono essere monitorati.
Prima corsa
Dopo la configurazione, eseguire i seguenti comandi:
sudo etckeeper init
sudo etckeeper commit "Initial commit"
Se la directory corrente è etc
, è possibile eseguire git
comandi regolari , ad es.
sudo git status
sudo git log