viernes, 3 de octubre de 2014

Linux y Git - Mostrar el branch actual en el prompt de la terminal

Mientras estamos trabajando en nuestra terminal y con git, sería de mucha utilidad tener siempre a la vista el branch sobre el que estamos trabajando actualmente. Esta característica lo vi en una terminal de Mac OS e inmediatamente quise tenerlo en mi terminal Linux.

Nota: Este tutorial sólo funcionará para aquellos que estén utilizando Bash como shell de la terminal.

1. Modificación básica

Abrimos el archivo .bashrc, el cual se encuentra en nuestra carpeta personal (~), con nuestro editor favorito para poder editarlo (crearlo si no existe). Con gedit por ejemplo:

$ gedit ~/.bashrc

Agregamos lo siguiente al final del archivo y lo guardamos:

function gitbranch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1) /'
}

PS1="\u@\h:\w \$(gitbranch)\$ "

El código anterior es gracias a Show the current git branch in linux terminal | SauRjk's Portal.

Ahora abramos una nueva terminal y dirijámonos hacia la carpeta donde tengamos un proyecto con git, por ejemplo:

miusuario@mihost:~ $ cd test
miusuario@mihost:~/test (master) $

Como vemos, ya tenemos funcionando la detección del branch que deseábamos.

Expliquemos un poco lo que acabamos de hacer:

  • La función gitbranch imprime el branch actual en la que nos encontramos en git.
  • PS1 es la variable que se imprime como prompt de la terminal. Dado que modificamos esta variable al final del archivo, nos aseguramos de sobreescribir el valor anterior del PS1. Así, si no nos gustan los resultados simplemente borramos lo que escribimos y todo volverá a ser como antes.
  • \u imprime el nombre de usuario, \h imprime el nombre de la máquina, \w imprime la carpeta de trabajo actual.
  • \$(gitbranch) ejecuta la función gitbranch que, como dijimos, imprime el branch actual.
  • \$ imprime el signo de dolar.

2. Dando color al prompt

Como seguramente habrás notado nuestro nuevo prompt no tiene color por lo que esta sección la dedicaremos a agregarle color a nuestro prompt.

Si no tenemos problemas con el inglés, podemos ir a la siguiente página en la cual aprenderemos todo sobre cómo colorear el prompt: bash:tip_colors_and_formatting - FLOZz' MISC

Para colorear texto en la terminal deberemos agregar la siguiente secuencia \[\e[XXXm\] antes del texto que queremos colorear, XXX es el código de color o formato que queremos agregar al texto.

A continuación una lista de códigos de colores:

Color      Código de color de letra      Código de color de fondo
Negro      30      40
Rojo      31      41
Verde      32      42
Amarillo      33      43
Azul      34      44
Magenta      35      45
Cyan      36      46
Blanco      37      47

El código 1 representa texto en negrita y el código 0 texto normal.

Con todo esto, el siguiente código resultará en el prompt que se muestra en la imagen del post:

PS1="\[\e[35m\]\u@\h:\[\e[36m\]\w \[\e[1m\]\$(gitbranch)\$\[\e[0;00m\] "

El último código (\[\e[0;00m\]) reinicia el formato y color del texto para que el texto que sigue no tenga ningún formato. Si no colocamos dicho código, el texto que ingresemos en la terminal tendrá un color cyan.

Con esto hemos terminado este post. Espero que les haya sido útil.

Fuentes:

  1. Show the current git branch in linux terminal | SauRjk's Portal
  2. bash:tip_colors_and_formatting - FLOZz' MISC

No hay comentarios:

Publicar un comentario