Kako čuvati dotfiles

2 min

dotfiles je ime za skup konfiguracionih fajlova na linux operativnim sistemima. Konfiguracija najčešće uključuje podešavanja shell-a, skriptove, manje alate i sl. Konfiguracioni fajlovi se nalaze mahom u $HOME folderu.

Problem sa konfiguracijom je njeno čuvanje i sinhronizacija sa drugim računarima. $HOME folder sadrži puno ostalih foldera i fajlova, te ih nije lako prosto backup-ovati ili sinhronizovati. Potrebno je sačuvati samo određene fajlove i foldere koji čine konfiguraciju, a sve ostalo prosto ignorisati – što ispada da nije tako trivijalno za sisteme za sinhronizaciju (Dropbox, Resillo Sync).

Upoznajte Homera

Homer je procedura koju koristim da čuvam konfiguracione fajlove na GitHub-u. Koristi se jedino git.

Početak

Prvo se pravi lokalni bare Git repozitorijum u folderu koji će služiti za skladištenje konfiguracije:

cd ~
mkdir .homer
cd .homer
git init --bare
git config --local status.showUntrackedFiles no
alias homer='git --git-dir=$HOME/.homer/ --work-tree=$HOME'

Dakle, pravi se bare repo koji ignoriše fajlove koji nisu eksplicitno dodati u njega. Alias je samo skraćenica za rad sa ovim repom; kako je detach-ovan stalno bi trebalo dodavati navedene parametre. Alias bi trebalo i sačuvati u shell skriptama kako bi bio uvek dostupan.

Ako je sve prošlo kako treba, status se može proveriti sa:

homer status

Povezivanje sa GitHub-om

Lokalni repo sada treba prebaciti na GitHub.

homer remote add origin https://github.com/igr/homer.git
homer push -u origin master

Sinhronizacija

Kada konfiguracija treba da se podeli na drugom računaru, potrebno je dovući repo sa GitHub-a:

cd ~
echo ".homer" >> .gitignore
alias homer='git --git-dir=$HOME/.homer/ --work-tree=$HOME'
git clone --bare https://github.com/igr/homer.git $HOME/.homer
homer config --local status.showUntrackedFiles no
homer checkout

Slično kao na početku, sa tom razlikom da se repo sada klonira. Komanda checkout može da pravi problema ukoliko postoje lokalni fajlovi koji su takođe prisutni i u repo-u.

Homer na dan

Raditi sa Homerom je jednostavno.

Dodavanje novih fajlova:

homer commit -m "bin"
homer push

Izmene se preuzimaju prostim:

```bash
homer pull

Homere, Simpson si!

Homer skripta

Na kraju sam i napravio Homer skriptu za menadžment dotifles.

🧧
Nisam definisan svojim stavovima. Stavove usvajamo, menjamo, nadograđujemo, ali oni ne čine nas same. Manje je važno da li se slažemo, koliko da se razumemo.