91 lines
2.9 KiB
Org Mode
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".
|