Etant donné que je travaille énormément avec SVN. C’est un outils très addictif… à tel point que je l’utilise dès que je travaille sur un projet (seul ou à plusieurs), je crée un reposoire pour le projet (c’est un excellent moyen de ne pas perdre son travail suite à une fausse manoeuvre). Comme en plus je ne supporte pas les front-end pour SVN, je travaille toujours en ligne de commandes…
Pour pouvoir améliorer la sortie des commandes SVN dans mes consoles, j’ai fait surchargé la commande svn
par une fonction zsh
:
function svn() {
if [[ $1 == "ci" || $1 == "commit" || $1 == "propedit" || $1 == "propset" || $1 == "help" ]]; then
/usr/local/bin/svn $*
elif [[ $1 == "preci" || $1 == "precommit" ]]; then
/usr/local/bin/svn status | grep -v '?' | ~/.zsh/zshcolorsvn
else
/usr/local/bin/svn $* | ~/.zsh/zshcolorsvn
fi
}
Cette fonction est donc très simple :
- si la commande nécessite un interaction de l’utilisateur, on appel directement le programme
svn
(le cas dehelp
permet de ne pas casser la tab-completion dezsh
) - sinon on envoi la sortie de svn dans un script qui réalise sa coloration syntaxique
Ceci donne un résultat de la forme suivante :
C’est donc extrêmement pratique ; ça permet de distinguer facilement les modifications, ça permet aussi de voir d’un seul coup d’oeil les conflits et la liste des fichiers modifiés. En plus ça fonctionne également avec des commandes comme cvs
ou diff
:
# SVN
function svn() {
if [[ $1 == "ci" || $1 == "commit" || $1 == "propedit" || $1 == "propset" || $1 == "help" ]]; then
/usr/local/bin/svn $*
elif [[ $1 == "preci" || $1 == "precommit" ]]; then
/usr/local/bin/svn status | grep -v '?' | ~/.zsh/zshcolorsvn
else
/usr/local/bin/svn $* | ~/.zsh/zshcolorsvn
fi; fi
}
# SVN avec conversion de la sortie en latin1
function svn_utf8() {
if [[ $1 == "ci" || $1 == "commit" ]]; then
svn $*
else
svn $* | iconv -f utf8 -t iso-8859-1
fi
}
function cvs() {
if [[ $1 == "diff" ]]; then
shift 1
/usr/bin/cvs diff -ubN $* 2> /dev/null | ~/.zsh/zshcolorsvn
elif [[ $1 == "ci" || $1 == "commit" || $1 == "propedit" || $1 == "propset" || $1 == "help" ]]; then
/usr/bin/cvs $*
else
/usr/bin/cvs $* 2> /dev/null | ~/.zsh/zshcolorsvn
fi;
}
function diff() { /usr/bin/diff -u $* | ~/.zsh/zshcolordiff }
Les scripts nécessaires sont disponibles : zshcolorsvn et zshcolordiff
Seul défaut : pour pouvoir utiliser les commandes sans coloration… il faut taper chemin complet.