Armazenando suas configurações com o Git

Quem usa Linux e é um tanto inquieto como eu conhece bem a rotina de, vez ou outra, instalar uma distro só pra ver o que mudou ou vive como um nômade de distribuição em distribuição.

Esse estilo de vida traz um problema bem cansativo de se resolver: a cada nova instalação todas as configurações se perdem e lá vai você passar alguns minutos ou horas deixando tudo mais ou menos como estava antes.

Isso acontece comigo desde sempre mas essa realidade passou a ser menos dura depois que aprendi a usar o Git [1].  O Git é um sistema de controle de versões desenvolvido pelo mesmo criador do Linux com o intuito de gerenciar as centenas de contribuições que o kernel recebe todos os dias. Com um problema em uma mão e o Git em outra resolvi tentar uma abordagem que funcionou muito bem e detalho logo a seguir.

Neste artigo vou mostrar como uso o Git para armazenar minhas configurações em nuvem e, quando instalo uma distro nova, as restauro em poucos minutos sem dor de cabeça. O processo está dividido em duas etapas: Salvar e Restaurar as configurações.

Salvando suas configurações

Arquitetura

Organizo meus arquivo de configuração da seguinte maneira para esta abordagem:

  • configuracoes (diretório)
    • localizações.txt
    • vim
    • terminator
    • i3wm
    • etc

O diretório Configurações, como o nome deixa bem claro, é onde centralizo os arquivos de configuração a serem gerenciados pelo Git. A seguir explico como o processo funciona.

Obtendo os arquivos de configuração

É bem provável que você já tenha deixado o seu sistema configurado do jeito que gosta: as cores do terminal, as teclas de atalho do teclado, a auto distribuição de janelas no i3wm, uma infinidade de plugins para o Vim, etc.

Primeiro você deve copiar os arquivos ou diretórios de configuração para dentro do diretório Configurações. Cada programa armazena suas configurações em locais diferentes, normalmente no seu diretório home em algum diretório oculto. Essa é a parte chata, prometo que é a única!

A cada arquivo de configuração que adiciono no diretório, crio uma nova entrada no arquivo localizações.txt para indicar o local de origem do arquivo que acabei de adicionar. O arquivo tem o seguinte layout por linha:

  • Nome – Esse é o nome do arquivo/diretório como ele aparece dentro do diretório de configurações.
  • Local – O path do local onde o arquivo estava originalmente.
  • Nome original – As vezes é necessário mudar o nome do arquivo/diretório porque no local original ele era oculto (o nome começava com um ponto). É necessário trocar o nome dentro do diretório de configurações para deixar mais fácil o manuseio via terminal e no Git. Neste campo coloco o nome do arquivo como ele era originalmente.

Salvando com o Git

Certifique-se de ter o Git instalado na sua distribuição e, no bom e velho terminal, digite:

$ cd configuracoes
$ git init
$ git add --all
$ git commit -m "Primeiro commit"

Esta série de comandos cria um repositório Git no diretório de configurações, marca todos os arquivos como prontos para serem versionados e por fim cria o primeiro registro de versão.  Para conhecer mais a fundo os comandos do Git consulte o Git Tutorial [2].

Usando as configurações armazenadas

Você já está usando o Git para controlar as versões dos seus arquivos de configuração mas ainda resta um detalhe: o seu sistema ainda está usando os arquivos de configuração não versionados! Chegou a hora de corrigir isso.

Através do terminal navegue até o diretório onde está um arquivo de configuração e, com atenção, execute os comandos a seguir para cada arquivo/diretório de configuração:

$ rm -r <nome do arquivo ou diretório de configuração>
$ ln -s ~/configuracoes/<nome arquivo> <nome correto arquivo>

Esta série de comandos apaga o arquivo ou diretório original de configuração e cria um link simbólico para a versão que está sendo controlada pelo Git. Um link simbólico é como um atalho turbinado: para qualquer programa é como se o arquivo realmente estivesse ali. Qualquer alteração no conteúdo do arquivo/diretório é refletida no original.

Armazenando suas configurações em nuvem

Existem vários serviços gratuitos de hospedagem de repositórios Git. O mais conhecido deles é o GitHub [3] que é gratuito para repositórios públicos. Como sou um pouco mais sensível em relação às minhas configurações utilizo o BitBucket [4] que permite a criação de repositórios privados gratuitos.

No serviço que preferir, crie um repositório e copie o endereço utilizado para acessá-lo (normalmente o serviço deixa bem destacado esse endereço). No terminal digite:

$ cd configuracoes
$ git remote add origin <endereço do repositório>
$ git push origin master

Esta sequência de comandos indica para o Git que o seu repositório local deve se conectar ao endereço que você digitou e envia uma cópia dos commits locais para o remoto. Aguarde alguns segundos e pronto! Suas configurações já estão salvas na nuvem e sempre disponíveis para serem restauradas quando necessário.

Mantendo suas configurações atualizadas

Um processo natural é ao longo do tempo ajustar suas configurações para atender melhor suas necessidades. Neste caso é necessário manter atualizados os arquivos de configuração não apenas no seu sistema local, mas também no repositório remoto. Se você não fizer isso pode ter a desagradável surpresa de restaurar suas configurações após uma reinstalação e descobrir que seus ajustes mais finos se perderam e você voltou à idade da pedra.

Para registrar qualquer modificação nas suas configurações digite no terminal:

$ cd configuracoes
$ git add --all
$ git commit -m "Descrição da modificação"
$ git push

Esta série de comandos marca todas as modificações como aptas a serem registradas, cria uma nova versão registrando suas modificações e por fim as envia para o repositório remoto.

Restaurando suas configurações salvas

Instalou uma distro nova e precisa restaurar suas antigas configurações? Chegou a hora de aprender como fazer isso.

Clonando o repositório de configurações

Vá até o serviço que você usou para criar um repositório e copie o endereço do repositório referente às suas configurações. Certifique-se de instalar o Git na sua distribuição e digite estes comandos no terminal:

$ cd ~
$ git clone <endereço do repositório>

Esta sequência de comandos irá criar uma cópia do repositório remoto no seu diretório home.

Usando as configurações restauradas

Consulte o arquivo localizações.txt para lembrar onde cada arquivo gerenciado com o Git é armazenado no seu computador (na coluna Local). Não custa nada lembrar: muito cuidado ao executar o comando rm -r, certifique-se de passar o nome do arquivo/diretório correto! No terminal digite os seguintes comandos para cada arquivo de configuração a ser restaurado:

$ rm -r <nome do arquivo ou diretório de configuração>
$ ln -s ~/configuracoes/<nome arquivo> <nome correto arquivo>

Pronto! Configurações restauradas. Lembre-se de reiniciar os programas aos quais as configurações pertencem para que elas tomem efeito de imediato.

Nota final

Esta é a abordagem que eu me identifico melhor, você é livre para fazer do jeito que quiser =). Uma próxima etapa para facilitar ainda mais o processo de restauração é criar um shell script para automatizar a criação de links simbólicos, mãos à obra!

Recursos

  1. Git resources – http://www.git-scm.com/
  2. Git tutorial – http://www.git-scm.com/docs/gittutorial
  3. GitHub – https://github.com/
  4. BitBucket – https://bitbucket.org/

Deixe um comentário