95 votes

git "ping" : vérifier si le dépôt distant existe

J'aimerais savoir si un dépôt à distance existe. Voici ce que j'ai trouvé :

git ls-remote -h "$REPO_URL" &> /dev/null

Y a-t-il un meilleur moyen ?

93voto

Peter Eisentraut Points 7030

Je pense que le git ls-remote La commande est pratiquement faite dans ce but.

20voto

Si vous utilisez --exit-code vous pouvez éviter d'envoyer la sortie vers null . Il ne retournera quelque chose qu'en cas d'erreur.

Vous pouvez également utiliser -h pour ne montrer que les références de têtes.

git ls-remote --exit-code -h "$REPO_URL"

4voto

jslatts Points 121

Vous pouvez réduire la sortie en utilisant quelque chose comme git ls-remote "$REPO_URL" HEAD

3voto

vaab Points 422

TL;DR :

git ls-remote est le chemin, voici une fonction Shell-ready pour un accès rapide :

  ## 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
  }

Utilisation :

if git-remote-url-reachable "$url"; then
   ## code
fi

Que fait-il ?

Il s'agit juste d'une synthèse pratique de tous les commentaires/solutions énoncés précédemment avec quelques petites modifications, une fonction prête à être copiée-collée en bash et un exemple de code d'utilisation pour que tout soit clair. Vous noterez que :

  • il limite la sortie car la référence vérifiée est probablement inexistante, car git se terminera toujours avec le niveau d'erreur 0 sur les références non correspondantes. . La seule différence ici est qu'il y a légèrement moins de sorties à transférer sur le réseau par rapport à à demander HEAD (et beaucoup moins que de ne pas demander une référence ou même de se limiter à seulement les têtes), et c'est aussi moins de sortie à couler dans les /dev/null (mais ce ce dernier prend un temps négligeable de toute façon)

  • l'arbitre a vérifié indique clairement que nous sondons l'existence ceci pourrait vous aider si vous voulez être poli avec les administrateurs du serveur que vous sondez et de leur donner une chance de comprendre pourquoi ils reçoivent ces sondes s'ils surveillent quoi que ce soit.

1voto

En désactivant la demande de Références puis l'énumération de la télécommande tête seulement :

export GIT_TERMINAL_PROMPT=0
git ls-remote "${repo}" HEAD &> /dev/null

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X