Gingle Bells ! Tout ça. C’est le moment de s’offrir un joli prompt git. Pour frimer mais aussi pour avoir sous la main plein d’infos qui vont nous faciliter la vie sur la ligne de commande et au quotidien.

 

Utilisation d’une contribution git : git-prompt

Nous allons utiliser une contribution proposée dans le dépôt officiel de git : git-prompt. Elle fonctionne pour bash et zsh, sur Linux mais aussi sur Git for Windows. Lorsqu’on se positionne dans un dépot git, elle permet d’afficher des notifications dans le prompt pour les cas suivants :

    • présence de nouveaux fichiers dans la zone de travail (%)
    • présence de fichiers modifiés dans la zone de travail (*)
    • présence de modifications indexées (+)
    • existence d’une ou plusieurs zones de stash ($)
    • affichage du statut de la branche locale par rapport à la branche distante (<, =, >)

Le script est fourni en standard par Git for Windows et la plupart des distributions Linux (dans /usr/share/doc/git-core ou /etc/bash_completion.d). Il propose des fonctions et des variables pour afficher ces informations.

Il ne reste plus qu’à l’intégrer à la définition du prompt, soit la variable PS1.

Modification du prompt

On va modifier cette variable PS1 pour intégrer les infos :

  1. Sourcer le script git-prompt.sh pour charger en mémoire variables et fonctions
  2. Activer les variables pour ajouter des notifications au prompt
  3. Redéfinir la variable d’environnement PS1 (prompt)

[ennael@zarafa ~]$ cat ~/.bashrc

# .bashrc

# Sourcer le fichier git-prompt (adapter le nom et le chemin du script)
. /etc/bash_completion.d/git-prompt.sh

# Activer les variables complémentaires

# afficher le status de la branche locale (<, >, =)
export GIT_PS1_SHOWUPSTREAM=1
# affiche (*) en cas de modifications en zone de travail ou de cache
export GIT_PS1_SHOWDIRTYSTATE=1
# affiche (%) en cas de nouveaux fichiers
export GIT_PS1_SHOWUNTRACKEDFILES=1
# affiche ($) lorsqu’au moins une zone de stash existe
export GIT_PS1_SHOWSTASHSTATE=1

# Construction du prompt utilisant la fonction git_ps1 avec colorisation
export PS1=’\e[32m[\u@\h \W\e[34m$(__git_ps1 ” \e[33m(%s)”)\e[32m]\$ \e[39m’

Sourcer le fichier .bashrc et c’est parti !

[ennael@zarafa ~]$ . ~/.bashrc

git-prompt en exemple

Voilà quelques exemples pour illustrer ce prompt.

 

Présence de nouveaux fichiers

[ennael@zarafa main (devel %)]$ 

Présence de modifications en zone de travail et en cache

[ennael@zarafa main (devel *+)]$ 

Présence de zone(s) de stash

[ennael@zarafa main (devel $)]$ 

Statut de la branche locale : 3 commits disponibles sur le serveur, 1 commit spécifique en local

[ennael@zarafa main (devel u+3-1)]$ 

Magnifique ! On résume.

Localiser le script git-prompt ou le télécharger

git worktree add <répertoire> <branche>

Modifier le fichier ~/.bashrc et le sourcer

. ~/.bashrc

Utiliser !