Configuración de linux

La personalidad de una compu con linux se escribe en puntoarchivos: archivos de texto cuyo nombre comienza con punto y generalmente son invisibles.

En alguna mudanza de computadora forzada por robo, aprendí la alegría que causan todas esas pequeñas cosas que hacen más fácil y agradable trabajar con tu compu. Y por eso es importante tener un respaldo de los puntoarchivos.

Hace poco encontré un enfoque muy interesante para resolver este problema: versionar todos los archivos en git usando varios repos.

Qué se necesita

  1. Un lugar público para guardar la configuración. (Opcionalmente también sería bueno un lugar privado.)

    El lugar público puede ser github o tu propio sitio.

  2. VCSH: Un script para administrar muchos repos desde un mismo directorio (por defecto $HOME).

  3. myrepos: Un script para ejecutar comandos en muchos repos a la vez.

Cómo se usa

Se instalan los programas necesarios:

sudo apt-get install myrepos vcsh

Se genera un repositorio por cada configuración que se desea versionar y se guarda la configuración de cada programa:

vcsh init vim
vcsh vim add .vimrc .vim

La configuración se sube a un lugar públicamente accesible:

vcsh vim remote add origin git@github:xihh87/vim-castle
vcsh vim push -u origin master

Se registra el repo en mr editando el archivo ~/.mrconfig:

REPO=vim
mr config .config/vcsh/repo.d/$REPO.git checkout='vcsh clone '`vcsh $REPO config --get remote.origin.url`

El procedimiento se repite para todos los repos.

Hay que agregar a ~/.mrconfig:

[DEFAULT]
include = cat /usr/share/mr/vcsh

Es importante que el repo de mr esté versionado:

vcsh init mr
vcsh mr remote add origin https://github.com/xihh87/mr-castle
mr config .config/vcsh/repo.d/mr.git checkout='vcsh clone '`vcsh mr config --get remote.origin.url`
vcsh mr add .mrconfig
vcsh mr push -u origin master

Una vez agregando todo desde otra computadora se puede sincronizar la configuración usando:

sudo apt-get install mr vcsh
vcsh clone https://github.com/xihh87/mr-castle
mr checkout
mr update