Я пишу ряд сценариев для управления Мерзавца в zsh.
Как я проверяю, является ли текущий каталог репозиторием Мерзавца? (Когда я не нахожусь в Мерзавце repo, я не хочу выполнять набор команд и получать набор fatal: Not a git repository
ответы).
Скопированный из файла завершения bash следующий наивный способ сделать это
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
if [ -d .git ]; then
echo .git;
else
git rev-parse --git-dir 2> /dev/null;
fi;
Вы можете либо обернуть это в функцию, либо использовать в сценарии.
Сжатое в одну строку условие, подходящее для bash или zsh
[ -d .git ] || git rev-parse --git-dir > /dev/null 2>&1
Использование Git Rev-Parse --git-dir
if git rev-parse --git-dir > /dev/null 2>&1; then : # This is a valid git repository (but the current working # directory may not be the top level. # Check the output of the git rev-parse command if you care) else : # this is not a git repository fi
Не уверен, существует ли общедоступный/документированный способ сделать это (есть некоторые внутренние git-функции, которые можно использовать/неиспользовать в самом git-источнике)
Можно сделать что-то вроде;
if ! git ls-files >& /dev/null; then
echo "not in git"
fi