web-dev-qa-db-fra.com

git "ping": vérifie l'existence d'un référentiel distant

J'aimerais savoir s'il existe un référentiel distant. Voici ce que je suis venu avec:

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

Y a-t-il une meilleure façon?

71
Jo Liss

Je pense que la commande git ls-remote est à peu près faite pour cela.

65
Peter Eisentraut

Si vous utilisez l'argument --exit-code, vous pouvez ignorer l'envoi de la sortie à null. Il ne retournera quelque chose qu'en cas d'erreur.

En outre, vous pouvez utiliser l'argument -h pour afficher uniquement les références d'en-tête.

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

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

3
ony

TL; DR:

git ls-remote est le chemin, voici une fonction prête pour Shell 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?

Ceci est juste un mélange pratique de tous les commentaires/solutions mentionnés précédemment avec quelques ajustements mineurs, une fonction de copie-coller prête à l'emploi et un exemple de code d'utilisation pour le rendre parfaitement clair. Vous noterez que:

  • il limite la sortie car la référence vérifiée est probablement inexistante, car git sera toujours fermé avec le niveau d'erreur 0 sur ref non concordant . La seule différence est qu’il y a un peu moins de sorties à transférer sur le réseau que de demander HEAD (et beaucoup moins que de ne pas demander une référence ou même une limitation aux têtes uniquement), ce qui représente également une sortie inférieure à /dev/null ( mais ce dernier prend quand même un temps négligeable)

  • le ref coché indique clairement que nous cherchons l'existence , cela pourrait aider si vous voulez être poli avec les administrateurs du serveur que vous sondez et donner leur permettre de comprendre pourquoi ils reçoivent ces sondes s’ils surveillent quoi que ce soit.

0
vaab