Ответы:
Я думаю, что git ls-remote
команда в значительной степени создана для этой цели.
Если вы используете --exit-code
аргумент, вы можете пропустить отправку вывода null
. Он вернет что-то только в случае ошибки.
Кроме того, вы можете использовать -h
аргумент, чтобы показать только ссылки на головы.
git ls-remote --exit-code -h "$REPO_URL"
-h
отличная идея Тем --exit-code
не менее, это не правильный выбор здесь. Страница man говорит: Выход со статусом «2», если в удаленном хранилище не найдено ни одной соответствующей ссылки. Это означает, что git ls-remote --exit-code "$REPO_URL"
произойдет сбой для пустого репо, которое только что было инициализировано git init
.
Вы можете сузить вывод, используя что-то вроде git ls-remote "$REPO_URL" HEAD
TL; DR:
git ls-remote
Кстати, вот готовая оболочка функция для быстрого доступа:
## Returns errlvl 0 if $1 is a reachable git remote url
git-remote-url-reachable() {
git ls-remote "$1" CHECK_GIT_REMOTE_URL_REACHABILITY >/dev/null 2>&1
}
Использование:
if git-remote-url-reachable "$url"; then
## code
fi
Что это делает?
Это просто удобное сочетание всех комментариев / решений, ранее заявленных с некоторыми небольшими изменениями, функцией bash copy-paste ready и примером использования кода, чтобы сделать его кристально чистым. Вы заметите, что:
он ограничивает вывод как ссылка проверяется, вероятно , не существует, так как git
все равно будет выход с ошибкой уровня 0 на несогласующейс исх . Единственное отличие состоит в том, что в сети немного меньше выходных данных для передачи по сравнению с запрашиваемым HEAD
(и гораздо меньше, чем не требующих реф или даже ограничение только головками), и это также меньше выходных данных для преобразования /dev/null
(но это последний занимает ничтожно мало времени в любом случае)
проверенная ссылка дает понять, что мы проверяем существование , это может помочь, если вы хотите быть вежливым с администраторами проверяемого сервера и дать им возможность понять, почему они получают эти пробники, если они что-то отслеживают.
/dev/null
) должны быть довольно небольшими.