2014-01-12 1 views
0

Я пытаюсь найти верхний уровень моего git-репо, но если он не работает, если я сейчас не находится в git-репо. Этот код вызывается из другого сценария, где я могу взять верхний уровень git или параметр командной строки. Например,Нужен git rev-parse для тихого отказа и возврата null

gpath = `git rev-parse --show-toplevel --quiet` 
if (gpath == null) && (options.path == null) 
    puts help 
end 

Если я пытаюсь просто мерзавец код @ командной строке я получаю «роковым: не вместилище мерзавец». Я попытался добавить переключатель -verify, и он дает тот же результат. Кто-нибудь знает как это сделать?

+1

Какая оболочка вы используете? Пожалуйста, скажите мне, что это не (t) csh! http://www.grymoire.com/unix/CshTop10.txt – Johnsyweb

+0

Мне нужно поддерживать команду git в различных оболочках. Я пишу текущую программу в Ruby (но не могу заставить команду даже тихо работать в разных оболочках). Я редактирую вопрос, чтобы удалить tcsh, потому что я думаю, что это только смущает вопросы (режим отказа одинаковый в каждой оболочке). –

ответ

1
if GPATH=`git rev-parse --show-toplevel --quiet 2>/dev/null`; then 
    echo "repo: $GPATH" 
else 
    echo "not a repo" 
fi 

2>/dev/null перенаправит фатальное сообщение об ошибке от стандартной ошибки (STDERR) в/DEV/нуль (нигде). В этом случае git rev-parse выйдет с статусом отказа, который вы можете проверить с помощью оператора if, как указано выше.

 Смежные вопросы

  • Нет связанных вопросов^_^