* 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 ~ dove con ~~ 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 ~ ** 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".