Configurando Dotfiles com Git
por Paulo Martins
Queria uma solução simples para gerenciar meus dotfiles. Claro que existem muitas outras alternativas, mas algumas são mais trabalhosas. Na própria wiki do Arch Linux, podemos encontrar algumas aplicações úteis para isso, além de vários repositórios criados pela comunidade.
Em meu ambiente de desenvolvimento, uso o i3wm como gerenciador de janelas. No entanto, para os usuários de Arch Linux, onde a instalação e configuração são feitas pelo próprio usuário, a quantidade de configurações e instalações pode se tornar um processo demorado. No entanto, os dotfiles podem ajudar com mais da metade dessas configurações, pois todo o seu backup fica concentrado no seu repositório git online. Isso facilita a obtenção de todo o seu ambiente de trabalho de forma rápida e prática.
A solução que escolhi foi retirada da própria wiki do Arch Linux, que é muito completa. Essa foi a forma mais prática que encontrei em minhas pesquisas na web. Pensei em adotar o GNU Stow, que também é bem interessante se for adaptado com um script de automação. Esse script fará a maior parte da criação dos links e das instalações.
O processo de configuração de um repositório local para um novo sistema que ainda não tenha dotfiles é bem simples, antes crie um repositório online que será usado com o git remote no repositório local.
Inicie um novo repositório em modo bare(repositório para armazenamento):
$ git init --bare ~/.dotfiles
$ alias dotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'
$ dotfiles config status.showUntrackedFiles no
$ dotfiles remote add main https://github.com/username/dotfiles.git
O alias pode ser setado no shell de forma permanente:
Fish shell
echo "alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'" >> $HOME/.config/fish/config.fish
Bash
echo "alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME'" >> $HOME/.bashrc
Agora, podemos usar os comandos padrão do Git para adicionar novos arquivos, alterar e atualizar o que está na pasta home.
Exemplo:
dotfiles status
dotfiles add .config/i3/config
dotfiles commit -m "i3 config"
dotfiles push
Para restaurar as configurações do repositório online em uma nova instalação do sistema, o processo é bastante semelhante. Esse processo deve ser feito antes da instalação ou criação dos arquivos de configuração dos pacotes instalados. Caso contrário, um aviso do Git informará que existem arquivos no repositório local, e será preciso fazer backup ou movê-los.
$ git clone --bare <git-repo-url> $HOME/.dotfiles
$ alias dotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'
$ dotfiles checkout
$ dotfiles config --local status.showUntrackedFiles no
Se o aviso de arquivos existentes for retornado pelo Git e você não se importar em sobrescrevê-los, faça o checkout forçado.
$ dotfiles checkout -f
Por fim, para não perder tempo instalando muitos pacotes, uso o próprio pacman para instalar todos os pacotes necessários para o funcionamento inicial do meu sistema. Isso pode ser feito por meio de um script shell ou outros recursos. Ainda não organizei isso, mas voltarei em algum momento e escreverei um artigo sobre o assunto.
Instalando pacotes essenciais:
# pacman -S --needed - < pkglist.txt
Concluindo, toda a documentação e as dicas podem ser encontradas na wiki do Arch Linux.
~$ Código Pirata