Проверьте, является ли текущий каталог репозиторием Мерзавца

Я пишу ряд сценариев для управления Мерзавца в zsh.

Как я проверяю, является ли текущий каталог репозиторием Мерзавца? (Когда я не нахожусь в Мерзавце repo, я не хочу выполнять набор команд и получать набор fatal: Not a git repository ответы).

167
задан nyuszika7h 21 May 2014 в 19:31
поделиться

3 ответа

Скопированный из файла завершения 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
141
ответ дан 23 November 2019 в 20:59
поделиться

Использование 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
41
ответ дан 23 November 2019 в 20:59
поделиться

Не уверен, существует ли общедоступный/документированный способ сделать это (есть некоторые внутренние git-функции, которые можно использовать/неиспользовать в самом git-источнике)

Можно сделать что-то вроде;

if ! git ls-files >& /dev/null; then
  echo "not in git"
fi
7
ответ дан 23 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: