Un prompt pour bash avec Bazaar
J’ai vu de nombreux articles indiquant comment afficher les informations de git au sein de son prompt Bash, d’habitude en utilisant la fonction bash qui vient avec git: __git_ps1.
Comme j’utilise un système de contrôle des versions au quotidien (Bazaar, si vous ne connaissez pas, allez donc jeter un oeil), j’ai vite vu l’intérêt de la chose. Malheureusement, je n’ai pas trouvé d’équivalent de __git_ps1 pour Bazaar, j’ai donc écrit ma propre fonction Bash. Elle n’est pas aussi généraliste, mais rend bien service tout de même.
Voici le bout de code pour la fonction elle-même:
bzr_info() { status=`bzr status 2> /dev/null` revno=`bzr revno 2> /dev/null` parent="" if [ "$1" == "showparent" ] then parent=`bzr info | awk '/parent/ {print $3}'` fi if [ "$revno" != "" ] then echo -n "(" if [ "$status" != "" ] then echo -n "*" fi if [ "$parent" != "" ] then echo -n "$parent:" else echo -n "bzr:" fi echo -n $revno echo -n ")" fi }
Pour s’en servir, il suffit d’ajouter ce morceau de code dans votre prompt: \\$(bzr_info), comme ceci:
PS1="[\\u@\\h \\w\\$(bzr_info) \\$]"
Ce qui affichera ce genre de prompts:
[etenil@cray1 ~/Projects/test(bzr:121) $] [etenil@cray1 ~/Projects/modified(*bzr:18) $]
Notez que si la branche a subi une modification non commitée, une étoile apparaît devant bzr. Vous pouvez aussi afficher la branche d’origine en passant l’argument showparent, comme ceci:
PS1="[\\u@\\h \\w\\$(bzr_info showparent) \\$]"
Et qui affichera ce genre de lignes:
[etenil@cray1 ~/Projects/test(http://bzr.ath.cx/test/trunk:121) $] [etenil@cray1 ~/Projects/test(*http://bzr.ath.cx/test/trunk:121) $]
Néanmoins, afficher l’origine est un peu plus lent et peut prendre beaucoup de place sur le prompt. A vous de voir!