Відповіді:
Я думаю, що git ls-remote
команда в значній мірі зроблена для цієї мети.
Якщо ви використовуєте --exit-code
аргумент, ви можете пропустити надсилання результатів до null
. Він поверне щось лише у випадку помилки.
Крім того, ви можете використовувати -h
аргумент для показу лише посилань на голови.
git ls-remote --exit-code -h "$REPO_URL"
-h
відмінна ідея. Однак --exit-code
тут не є правильним вибором. На головній сторінці написано: Вийдіть зі статусом "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
Що це робить?
Це просто зручне підмітання всіх раніше зауважень / рішень із невеликими налаштуваннями, функцією готового копіювання-вставки та зразком коду використання, щоб зробити його кристально чистим. Ви зауважите, що:
він обмежує вихід, оскільки перевірене посилання, ймовірно, не існує, оскільки git
все-таки вийде з рівнем помилок 0 на невідповідному посиланні . Єдина відмінність тут полягає в тому, що для передачі в мережі є дещо менше результатів порівняно із HEAD
запитом (і набагато менше, ніж не вимагати посилання або навіть обмеження лише головами), і це також менший вихід для передачі /dev/null
(але це останній все одно займає мізерно мало часу)
якщо підтверджено, це дає зрозуміти, що ми намагаємося існувати , це може допомогти, якщо ви хочете бути ввічливими з адміністраторами сервера, на якому ви перевіряєте, і дати їм можливість зрозуміти, чому вони отримують ці зонди, якщо вони що-небудь контролюють.
/dev/null
) повинні бути досить невеликими.