Existe-t-il un moyen de répertorier tous les référentiels existants à l'aide de git?

22

Pour cloner un référentiel git, il faut avoir le nom du référentiel. Lorsque vous travaillez avec de nombreux référentiels, il peut être difficile de se souvenir de tous les différents noms, alors maintenant je me demande s'il est possible de répertorier tous les référentiels existants sur le serveur distant en utilisant une commande git.

Cyclonecode
la source
Pouvez-vous publier votre réponse en tant que réponse distincte plutôt qu'en tant que modification de votre question?
Mateusz Konieczny

Réponses:

8

Vous devez soit avoir un accès Shell à la machine hébergeant le git-daemon et voir les paramètres utilisés pour appeler git-daemon, soit utiliser l'interface Web Git (navigateur de référentiel) appelée GitWeb .

Reportez-vous également à cette question existante

Il existe un autre moyen, mais il a besoin de l'aide des administrateurs de serveur de votre entreprise. Git dispose d'une interface Web consultable appelée «GitWeb» qui peut être configurée pour afficher tous les projets servis par git.

Les détails sont expliqués dans le fichier LISEZMOI de GitWeb - la clé de configuration qui vous intéresse est appelée "GITWEB_PROJECTROOT":

GITWEB_PROJECTROOT The root directory for all projects shown by gitweb. Must be set correctly for gitweb to find repositories to display. See also "Gitweb repositories" in the INSTALL file for gitweb.

Peut-être pourriez-vous discuter avec vos administrateurs - gitweb peut être un grand profit pour tous les développeurs.

Pour autant que je sache, cela doit être fait sur la machine qui exécute git-daemon. Vous devez soit vérifier les arguments où git-daemon a été invoqué, soit vérifier /etc/inetd.conf

IUnknown
la source
0

Comme j'avais un accès shell à la machine distante, j'ai fini par écrire un petit fabricscript qui pouvait être exécuté à partir du terminal pour répertorier tous les référentiels distants:

#!/bin/python

from fabric.api import run, env
from fabric.colors import green 

env.hosts = ['<hostname>'];
env.user = '<user>';
env.password = '<password>';

def lr():
  "Lists all remote repositories"
  print(green("listing remote repos"))
  run('cd /var/git; ls -al')

Je peux maintenant lister tous les référentiels distants en émettant la commande suivante depuis le terminal:

fab lr
Cyclonecode
la source
Notez que ce script suppose que les référentiels git sont situés dans /var/git. Bien que ce soit généralement le cas, ce n'est pas toujours vrai.
Dave Sherohman
0

Cela dépend fortement de la façon dont ces référentiels sont accédés, donc il n'y a pas vraiment de réponse simple et universelle:

  • Si les repos sont servis par git-daemonet / ou gitweb, vous pouvez regarder la configuration pour voir où elle garde ses repos et lister le contenu de ce répertoire.
  • Si les dépôts sont accessibles via ssh, ils peuvent être situés n'importe où dans le système de fichiers. Vous devriez pouvoir les trouver en recherchant tous les répertoires du système contenant un fichier nommé HEAD(par exemple locate HEAD | grep \/HEAD$), mais cela peut produire des faux positifs et affichera également tous les dépôts qui sont uniquement des répertoires de travail locaux et ne sont pas partagés ou ont été clonés à partir de une autre source.
  • Si les dépôts sont gérés par gitlab , ils ne sont pas du tout dans le système de fichiers, vous devez donc utiliser l'interface Web de gitlab pour les répertorier. Notez que certains dépôts peuvent être masqués dans cette liste si vous n'êtes pas autorisé à y accéder.
Dave Sherohman
la source