получить "SVN Info", чтобы не жаловаться, если он не находится в папке SVN - PullRequest
1 голос
/ 06 апреля 2011

Я работаю с некоторыми сценариями bash для переменной PS1, чтобы контролировать цвета моей командной строки.Одна из вещей, которую я хочу сделать, это поставить "(svn)" после имени локальной папки, если я нахожусь в репозитории svn.То, как я пытаюсь сделать это, с помощью этой функции в моем .bashrc, который я вызываю, когда я устанавливаю PS1:

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

Это прекрасно работает, если я нахожусь в папке svn.Однако, если я захожу в папку, отличную от svn, это вызывает жалобу "svn: '.' is not a working copy", которая явно раздражает.Я не эксперт по bash-скриптингу, может кто-нибудь увидеть, как это остановить?

спасибо, макс.

Я подумал об альтернативном способе определения, нахожусь ли я в папке SVN,искать каталог .svn, но информация svn кажется чище как-то.Плюс мне просто любопытно, как остановить сообщение об ошибке или как-то спрятать его в моем скрипте bash.

1 Ответ

1 голос
/ 06 апреля 2011

Перенаправить стандартную ошибку вашей команды на /dev/null:

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

Команда svn, вероятно, записывает ошибку в stderr, когда не удается найти репозиторий.

...