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

[[...]]{style="font-family: 'Courier New', Courier, monospace;"}
[# Search for git repos.]{style="font-family: 'Courier New', Courier, monospace;"}
[parse_git_branch() {]{style="font-family: 'Courier New', Courier, monospace;"}
[  git branch 2> /dev/null | sed -e '/\^[\^*]/d' -e 's/* \(.*\)/(\1)/']{style="font-family: 'Courier New', Courier, monospace;"}
[}]{style="font-family: 'Courier New', Courier, monospace;"}
[
]{style="font-family: 'Courier New', Courier, monospace;"}
[# uncomment for a colored prompt, if the terminal has the capability; turned]{style="font-family: 'Courier New', Courier, monospace;"}
[# off by default to not distract the user: the focus in a terminal window]{style="font-family: 'Courier New', Courier, monospace;"}
[# should be on the output of commands, not on the prompt]{style="font-family: 'Courier New', Courier, monospace;"}
[force_color_prompt=yes]{style="font-family: 'Courier New', Courier, monospace;"}
[
]{style="font-family: 'Courier New', Courier, monospace;"}
[if [ -n "\$force_color_prompt" ]; then]{style="font-family: 'Courier New', Courier, monospace;"}
[    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then]{style="font-family: 'Courier New', Courier, monospace;"}
[[ ]{.Apple-tab-span style="white-space: pre;"}# We have color support; assume it's compliant with Ecma-48]{style="font-family: 'Courier New', Courier, monospace;"}
[[ ]{.Apple-tab-span style="white-space: pre;"}# (ISO/IEC-6429). (Lack of such support is extremely rare, and such]{style="font-family: 'Courier New', Courier, monospace;"}
[[ ]{.Apple-tab-span style="white-space: pre;"}# a case would tend to support setf rather than setaf.)]{style="font-family: 'Courier New', Courier, monospace;"}
[[ ]{.Apple-tab-span style="white-space: pre;"}color_prompt=yes]{style="font-family: 'Courier New', Courier, monospace;"}
[    else]{style="font-family: 'Courier New', Courier, monospace;"}
[[ ]{.Apple-tab-span style="white-space: pre;"}color_prompt=]{style="font-family: 'Courier New', Courier, monospace;"}
[    fi]{style="font-family: 'Courier New', Courier, monospace;"}
[fi]{style="font-family: 'Courier New', Courier, monospace;"}
[
]{style="font-family: 'Courier New', Courier, monospace;"}
[if [ "\$color_prompt" = yes ]; then]{style="font-family: 'Courier New', Courier, monospace;"}
[    ]{style="font-family: 'Courier New', Courier, monospace;"}[[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\] \\$ ]{style="font-family: 'Courier New', Courier, monospace;"}]{style="background-color: white;"}[']{style="background-color: white; font-family: 'Courier New', Courier, monospace;"}
[else]{style="font-family: 'Courier New', Courier, monospace;"}
[    PS1='\${debian_chroot:+(\$debian_chroot)}\u@\h:\w\$(parse_git_branch)\\$ ']{style="font-family: 'Courier New', Courier, monospace;"}
[fi]{style="font-family: 'Courier New', Courier, monospace;"}
[unset color_prompt force_color_prompt]{style="font-family: 'Courier New', Courier, monospace;"}
[[...]]{style="font-family: 'Courier New', Courier, monospace;"}

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 :)

Comments


There are no comments yet.

Add a Comment

You can use the Markdown syntax to format your comment.

Comment Atom Feed