martes, 8 de enero de 2013

Prompt para desarrolladores multi SCM

Para los que manejan varios SCMs a la vez, ya sea por gusto o por necesidad, va un tip para definir el tipo de SCM del directorio actual, y si hay archivos sin comitear (mostrando un * en el prompt).
En el caso de git, también muesta el branch en el que estás trabajando.

Ponelo en el ~/.bashrc o cualquier otro archivo que se importe al iniciar la sesión de bash:

-----------------------------------------------
PS1='\[\033[01;32m\]\h\[\033[00m\] \[\033[01;34m\]\W\[\033[01;33m\]$(get_repo_info)\[\033[00m\]\$ '

function get_repo_info {
    INFO=""
    DIRTY=""

    for i in svn:info bzr:info hg:summary
    do
        TYPE=`echo $i | cut -f1 -d':'`
        COMMAND=`echo $i | cut -f2 -d':'`
        if [ "$INFO" == "" ] && [ `$TYPE $COMMAND 2>/dev/null | wc -l` -gt 0 ]
        then
            [ `$TYPE status 2> /dev/null | grep -v '?' | wc -l` -gt 0 ] && DIRTY='*'
            INFO="⚡$TYPE$DIRTY"
        fi
    done

    if [ "$INFO" == "" ] && [ `git branch 2>/dev/null | wc -l` -gt 0 ]
    then
        BRANCH=`git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1/"`
        [ `git status --porcelain 2> /dev/null | wc -l` -gt 0 ] && DIRTY='*'
        INFO="⚡git:$BRANCH$DIRTY"
    fi

    echo $INFO
}
-----------------------------------------------

Y si querés verlo antes de probarlo, una captura:


2 comentarios:

Anónimo dijo...

por las dudas si no viste el comentario en g+ te cuento que upgradee tu codigo

http://jbcabral.com/2013/01/12/prompt-para-desarrolladores-multi-scm-upgraded/

Gabriel Patiño dijo...

Gracias Cabral, muy útil. Lo voy a probar cuando vuelva de las vacaciones.
En el caso de bazar no sé si es muy útil mostrar el Branco porque en definitiva es uno de los niveles del path, bastaría con cambiar el /W por /w y verías el path completo.

(Perdón por las barras, en android no encontré la barra invertida)