GNU/Linux >> Linux Esercitazione >  >> Linux

È una buona idea usare git per il controllo della versione del file di configurazione?

La risposta breve alla tua domanda è .

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:

  1. "salvataggio delle modifiche non salvate in /etc prima dell'esecuzione di yum"
  2. "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.


Linux
  1. A cosa servono gli inode?

  2. KRename – Un potente rinominatore di file batch per Linux

  3. Controllare i file di configurazione di Linux per errori di sintassi

  4. Come utilizzare Logrotate per gestire i file di registro

  5. Hai bisogno di un buon editor esadecimale per Linux

Come usare CherryTree per prendere appunti

Usa Git per eseguire il backup dei file di configurazione su Linux

Come utilizzare il comando SCP per il trasferimento di file

Come utilizzare il comando SCP per trasferire file in modo sicuro

Comando ls in Linux per elencare i file

Inventario Ansible e file di configurazione