2011-04-06 2 views
1

Je bricoler avec quelques scripts bash pour la variable PS1, pour contrôler mes couleurs de ligne de commande. Une des choses que je veux faire est de mettre "(svn)" après le nom du dossier local si je suis dans un svn repo. Comment je suis en train de le faire est atm avec cette fonction dans mon .bashrc, que j'appelle quand je mets PS1:obtenir "svn info" pour ne pas se plaindre si ce n'est pas dans un dossier svn

function __svn_branch { 
    local branch=$(svn info | grep URL:) 
    [ "$branch" != "" ] && echo "(svn)" 
} 

Cela fonctionne bien si je suis dans un dossier svn. Cependant, si je vais à un dossier non-svn, il déclenche cette plainte "svn: '.' is not a working copy" qui est évidemment ennuyeux. Je ne suis pas un expert de script bash, quelqu'un peut-il voir comment arrêter cela?

merci, max

Je pensais que d'une autre façon de dire si je suis dans un dossier svn, qui est à la recherche d'un répertoire .svn, mais svn info semble plus propre en quelque sorte. De plus, je suis juste curieux de savoir comment arrêter le message d'erreur, ou le cacher dans mon script bash en quelque sorte.

Répondre

1

Rediriger l'erreur standard de votre commande à /dev/null:

local branch=$(svn info | grep URL: 2> /dev/null) 

La commande svn écrit probablement une erreur de stderr quand il ne parvient pas à trouver une prise en pension.

+0

Merci Adam, mais ça tourne encore sur la ligne de commande. –

Questions connexes