Branch de Git en Tmux

Para desempolvar este blog, le he instalado el nuevo tema 2014 que está bien paja. Después le cambiaré la imagen de la portada. Pero por ahora, quiero comentarles sobre un pequeño script que he creado para jugar mejor con Git:

https://github.com/drmad/tmux-git

Este script muestra la rama (‘branch‘) activa del repositorio Git que está en el directorio activo en la barra de estado de Tmux, un “multiplexador” de terminales cliente-servidor muy paja, que además proporciona esa barra de estado.

¿Por qué Tmux? Hay varias soluciones para mostrar el branch activo en el prompt del terminal de Linux, como esta (lo cual es muy útil, para no estar repitiendo git status constantemente), pero la verdad es que me gusta tener el prompt sencillo, sin tantos bombos ni platillos. Entonces, ¿dónde muestro esa información?

Ahi entra a tallar Tmux.

Instalación

Primero necesitas, obviamente, tener instalado tmux y git… Si unas una distro derivada de Debian (como Ubuntu, Mint, ElementaryOS, SteamOS, etc.), basta ejecutar:

sudo apt-get install tmux git

Una vez instalado todo, clonas el proyecto a una carpeta escondida en tu home:

git clone git://github.com/drmad/tmux-git.git ~/.tmux-git

Luego, agregas el script en el fichero de incialización de Bash ejecutando esta línea:

echo "if [[ \$TMUX ]]; then source ~/.tmux-git/tmux-git.sh; fi" >> ~/.bashrc

Y ejecutas el tmux, Cambias tu directorio por defecto a un repo Git, et voilà:

Si el branch tiene cambios pendientes para ser commiteados, el mensaje aparece resaltado, y con un asterisco al lado:

La configuración se realiza modificado el fichero ~/.tmux-git.conf, que se crea automáticamente al iniciar el script por primera vez. Dentro hay 2 variables y una función:

TMUX_STATUS_LOCATION define la posición del estado de git en la barra de tmux. El valor puede ser left o right.

TMUX_OUTREPO_STATUS define el contenido del estado cuando no estés dentro de una repo git. Por defecto es la configuración actual de tmux.

TMUX_STATUS_DEFINITION() es una función que debe definir el contenido de la variable TMUX_STATUS, que es mostrado en la barra de estado de tmux. Por defecto muestra [nombre-repo] | branch: [rama][*]