Respuestas:
Creo que el git ls-remote
comando está hecho para ese propósito.
Si usa --exit-code
argumentos, puede omitir el envío de resultados null
. Solo devolverá algo en caso de error.
Además, puede usar -h
argumentos para mostrar solo referencias de cabezas.
git ls-remote --exit-code -h "$REPO_URL"
-h
Es una gran idea. Sin embargo, --exit-code
no es la elección correcta aquí. La página de manual dice: Salga con el estado "2" cuando no se encuentren referencias coincidentes en el repositorio remoto. Esto significa que git ls-remote --exit-code "$REPO_URL"
fallará para un repositorio vacío que se acaba de inicializar git init
.
Puede reducir la producción utilizando algo como git ls-remote "$REPO_URL" HEAD
TL; DR:
git ls-remote
es el camino, aquí hay una función lista para shell para acceso rápido:
## 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
}
Uso:
if git-remote-url-reachable "$url"; then
## code
fi
Qué está haciendo ?
Esto es solo una combinación conveniente de todos los comentarios / soluciones previamente establecidos con algunos pequeños ajustes, una función de listo para copiar y pegar bash y una muestra de código de uso para que quede claro como el cristal. Notarás que:
limita la salida ya que la referencia marcada es probablemente inexistente, ya git
que todavía saldrá con el nivel de error 0 en la referencia no coincidente . La única diferencia aquí es que hay un poco menos de salida para transferir en la red en comparación con la solicitud HEAD
(y mucho menos que no pedir una referencia o incluso limitarla solo a cabezas), y esto también es menos salida para emitir /dev/null
(pero esto el último está tomando un tiempo insignificante de todos modos)
la referencia verificada deja en claro que estamos investigando la existencia , esto podría ayudar si desea ser cortés con los administradores del servidor que está investigando y darles la oportunidad de comprender por qué reciben estas sondas si supervisan algo.
/dev/null
) debe ser bastante pequeña.