sdf_appunti/homerepo.org

2.9 KiB
Raw Permalink Blame History

Gestione della $HOME direttamente come repository

E' un metodo che consiste nel fare in modo che il contenuto della $HOME sia gestito direttamente come un repository Git.

La forma più comune con cui questo metodo viene messo in pratica consiste nella creazione di un repository Git di tipo "bare" nella $HOME e poi utilizzarlo con le opzioni standard di Git.

Git consente infatti di indicare, tramite appositi parametri, sia la directory con i files da tracciare, sia la directory con i suoi dati.

Per evitare di ripetere ogni volta questi parametri e anche per evitare di sbagliarli si crea comunemente un alias.

Il metodo di lavoro

Creazione del repository "bare"

Il repository può essere creato da zero o clonato da un server remoto.

Per convenzione si utilizzerà un repository che localmente si chiama .dotfiles. Si assume che i comandi siano dati avendo la $HOME come directory corrente.

Se si vuole creare un nuovo repository il comando da dare è: git init --bare .dotfiles

Se invece si vuole clonare un repository remoto il comando da dare è: git clone --bare <url> dove con <url> si indica l'indirizzo da cui clonare con l'accesso http/https o con l'accesso ssh.

Definizione dell'alias

Per rendere più semplice l'operatività si utilizza un alias. Si può scegliere un qualsiasi nome per l'alias.

L'alias va reso disponibile ad ogni login, qui si aggiunge al .bashrc. Per aggiungerlo si può modificare il file con un editor o accodarlo con i comandi di shell.

Per aggiungere l'alias accodandolo: ~echo "alias dotfiles='usr/bin/git git-dir=$HOME.dotfiles work-tree=$HOME'" >> $HOME/.bashrc

Configurazione del repository

Per evitare di vedere sempre come "non gestiti" tutti i files di cui non ci importa e che non devono andare nel repository occorre configurare Git in modo che non ce li mostri: dotfiles config --local status.showUntrackedFiles no

Infine, solo Se si è creato un nuovo repository e si intende appoggiare il tutto ad un server remoto occorre configurare il "remote": dotfiles remote add <url>

Operatività:

A questo punto si usano i normali comandi Git avendo l'unica accortezza di usare dotfiles invece di git

Alcuni esempi

Aggiungere un nuovo file all'area di stage

dotfiles add /path/to/file

Commit

dotfiles commit

Push

dotfiles pull

Caveats

Non è tutto oro quello che luccica.

Questo metodo rende complessa la gestione di files di configurazione di macchie diverse. Si può ricorrere all'uso delle branch per identificare la macchina, ma questo funziona soltanto se il numero di macchine è limitato e si lavora con molta diligenza.

Non è semplice avere dei diff tra le versioni proprio perché si usa un repository bare.

dotfiles reset --hard potrebbe causare un infarto.

"Varie ed eventuali".