viernes, 13 de julio de 2012

Poniendo la rama del repositorio de git en el prompt

A partir de la charla Git and Debian packaging me saltó la duda de como lograr un prompt que me diga la rama actual de git cuando me encuentre en un repositorio.

Christian "bubulle" Perrier nos ofreció éste link. La idea me gustó mucho, pero tuve que twikearlo un poco para que use colores :-)

El resultado, en mi ~/.bashrc

[...]
# Search for git repos.
parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}


# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes


if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
    else
color_prompt=
    fi
fi


if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\[\033[01;31m\]$(parse_git_branch)\[\033[00m\] \$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt
[...]

Como verán, agregué la función parse_git_branch() tal y como se describe en el link. Luego agregué la llamada en la definición del color prompt.

Por supuesto, se puede mejorar aún mas :)

Nota 201207172003GMT-3: bubulle parece haber hecho lo mismo, sólo que él lo mejoró. Y por supuesto, cambié el post de forma acorde :)