Unix’te uygulamaların yapılandırma dosyaları (dotfiles) ev dizininde tutuluyor.
Bu yazıda, dosyaları git repo’sunda tutarak, farklı ortamlarda aynı ayarları
kullanmanın en basit yöntemini anlatacağım.
Bu iş için Git’in bare repo özelliğini kullanacağım. Bu yöntemle, yapılandırma
dosyalarını kullanıcının ev dizinine almak için ek bir yöntem uygulamaya gerek
yok (dosya linkleme, make veya submodule ekleme gibi).
mantığını öğrenmek isterseniz bu yazıda güzel anlatılmış; Using a bare Git repo to get version control for my dotfiles
git init --bare ~/.dotfiles
echo 'alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME"' >> $HOME/.bashrc && source ~/.bashrc
dotfiles config --local status.showUntrackedFiles no
dotfiles remote add origin https://github.com/$USERNAME/$REPOSITORY.git
1) Dosyaların git history’sinin tutulacağı bare repo’yu oluştur.
2) Git’e snapshot olarak bare repo dizinini, history olarak da /home/orkung dizinini göster. Bunu dotfiles alias’ı olarak bashrc’ye ekle, bashrc’yi uygula.
3) Git’e snapshot dizinindeki takip edilmeyen tüm dosyaları göstermemesini söyle.
4) uzak repoyla bare repo’yu sync et. (uzak sunucuda bir repo oluşturmanız gerekir.)
Dosyaları eklemeye başlayabiliriz.
dotfiles add .vimrc
dotfiles commit -m "Add vimrc"
dotfiles branch -M main
dotfiles push -u origin main
Şimdi herhangi başka bir makinadan veya kullanıcıdan yapılandırma dosyalarını
çekelim.
git clone \
--separate-git-dir=$HOME/.dotfiles \
git@github.com:$USERNAME/$REPOSITORY.git\
dotfiles-tmp
rsync --recursive --verbose --exclude '.git' dotfiles-tmp/ $HOME/
rm -rf dotfiles-tmp
echo ".dotfiles" >> .gitignore
dotfiles checkout
dotfiles config --local status.showUntrackedFiles no
1) --separate-git-dir
history ile snapshot’u farklı dizinlerde tutabilmek için
belirtiyoruz. snapshot’u dotfiles-tmp’de tutuyoruz, ihtiyacımız olan dosyaları
aldıktan sonra bu dizini sileceğiz.
2) .git
dizinini hariç tutarak dosyaları aldık.
3) Artık dotfiles-tmp’le bir işimiz kalmadığından siliyoruz.
4) Repo’ya .dotfiles dizinini almaması için.
Son olarak, yeni ortamdan yapılandırma dosyalarında yapacağımız değişiklikleri repo’ya push’layabiliriz.
dotfiles status
dotfiles add .bashrc
dotfiles commit -m ".bashrc'de duzenleme"
dotfiles push