sdf_appunti/homerepo.org

91 lines
2.9 KiB
Org Mode

* 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".