Hacer que el indicador de shell muestre la cabecera actual cuando está en un VCS

Cuando uso un VCS, (uso Mercurial y Git en Linux, indicador de Bash), ¿hay alguna forma de que el indicador muestre el encabezado o label actual en el directory?

Más de una vez me he disparado en el pie trabajando en una cabeza cuando pensaba que estaba en otra, por ejemplo, presionando v0.3 para probar cuando necesitaban v.02, o parcheando errores en Dev, entonces necesitaban parchearlos prod , o viceversa.

Git proporciona una function bash que muestra la twig actual o hash si no tiene cabeza. Busque __git_ps1 en el file bash_completion .

Mi ~/.bashrc contiene estas líneas:

 Green='\[\e[0;32m\]' BIGreen='\[\e[1;92m\]' Color_Off='\[\e[0m\]' export PS1=$Green'\w $(__git_ps1 "(%s)")'$BIGreen'$ '$Color_Off 

que creará un post como este:

 ~/repos/myproject (master)$ 

Para Mercurial, hay un hg-prompt de Steve Losh. Esta es una extensión para Mercurial que le da un nuevo command hg prompt . Pones una llamada a este command en tu variable de entorno PS1 :

 export PS1='\u in \w`hg prompt "{on {branch}}{status}{update}" 2>/dev/null` $' 

para recibir un aviso como

 user in ~/src/project on feature-branch? $ 

donde el ? al final te dice que hay un file desconocido en tu repository.

Steve escribió una publicación en el blog sobre su aviso de Zsh y hay más indicaciones coloridas de la documentation:

Las coloridas indicaciones de Steve

Eche un vistazo a git-prompt . Se describe a sí mismo como un "indicador bash con modules GIT, SVN y HG".

Solo por git puedes hacerlo mucho más fácil: simplemente carga el module bash-completion (simplemente source git-completion.bash – encontrarás el file en algún lugar del tree de fonts de git o si instalaste git usando tu administrador de packages en lo que sea carpeta en la que coloca los modules de finalización de bash) de git y usa __git_ps1 en tu post, por ejemplo, a través de la export PS1='w$(__git_ps1 "(%s)") > '

Vale la pena echar un vistazo a http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/ . Git y Mercurial, más una carga de otra información.

Incluso si no quiere su aviso exacto, proporciona mucha información sobre cómo lo desarrolló.

Eche un vistazo a http://vcprompt.com/ . Está escrito en Python, multiplataforma, y ​​simplemente puede downloadlo y soltarlo en su directory bin. Admite bzr, cvs, darcs, fósil, git, hg y svn.

Aquí hay un post de bash de Mercurial:

 function parse_hg_branch { _hg_id=`hg id 2> /dev/null` _hg_id="$_hg_id `hg id -nb 2> /dev/null`" echo $_hg_id unset _hg_id } function proml { local LIGHT_RED="\[\033[1;31m\]" local BROWN="\[\033[0;33m\]" local GREEN="\[\033[0;32m\]" local CYAN="\[\033[0;36m\]" local DEFAULT="\[\033[0m\]" PS1="$LIGHT_RED\u@$BROWN\h:$GREEN\w $CYAN\$(parse_hg_branch) $DEFAULT\$ " } proml 

Que se expande a algo como esto:

 fnetworking@bedrock:~ e65381b0ed42+ tip 0+ default $