2014-09-30 3 views
0

Я пишу скрипт, который использует git fetch --all && git fetch --all --tags для извлечения всех ветвей и тегов всех пультов.Перенаправить только ошибку команды git в файл журнала

Что я хочу сделать, игнорировать/не отображать извлечение вывода, но если сбой неудачи, тогда сделайте что-нибудь (например, напишите сообщение об ошибке в файл журнала и отправьте его по почте). Как я могу игнорировать нормальный вывод, но записывать только ошибку в файл журнала, если команда не выполняется?

ОС: CentOS 6.5

мерзавец: 2.1.0-rc1

Спасибо!

Update-1

git-fetch пишет в стандартный поток ошибки, даже при успешной выборке. Так что, если я

git fetch a.j 1>success 2>errlog, то даже при успешных выборках я получаю это в файле ошибки:

От xx.xx.xx.xx: user.name/repo

  • [новый филиал ] для/lib.base/ядра -> а ^/для/lib.base/сердцевины

  • [новый филиал] для/мастеров/lib.base_core -> а ^/для/мастера/lib.base_core

  • [ новый филиал] для/мастера/memmgr -> Aj/для/мастера/memmgr

ответ

2

Вы можете использовать Unix stderr дескриптор 2 захватить ошибку в файл:

git fetch --all && git fetch --all --tags 1>/dev/null 2>error.log 

1>/dev/null является нормальные выходы stdout, тогда как 2>error.log регистрирует ошибки в файле error.log.

+0

Ваше решение отлично работает в обычном режиме. но 'git-fetch' отправляет список новых ветвей, созданных также на stderr. Таким образом, вышеприведенная команда записывает error.log даже при успешном извлечении. –