Pour cloner un référentiel git, vous devez avoir le nom du référentiel. Lorsque vous travaillez avec de nombreux référentiels, il peut être difficile de retenir tous les noms. Je me demande donc s’il est possible de répertorier tous les référentiels existants sur le serveur distant à l’aide d’une commande git.
Vous devez soit avoir un accès Shell à la machine hébergeant le démon git et voir les paramètres utilisés pour appeler git-démon, soit utiliser l'interface Git Web (navigateur de référentiel) appelée GitWeb .
Référez-vous également cette question existante
Il existe un autre moyen, mais il a besoin de l'aide des administrateurs du serveur de votre entreprise. Git propose une interface Web navigable appelée "GitWeb" qui peut être configurée pour afficher tous les projets servis par git.
Les détails sont expliqués dans GitWeb README - 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.
Vous pourriez peut-être avoir une conversation avec vos administrateurs - Gitweb peut être un grand bénéfice pour tous les développeurs.
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é appelé, soit éventuellement vérifier /etc/inetd.conf
Comme j'avais accès à la machine distante dans Shell, j'ai fini par écrire un petit script fabric
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 dépôts distants en émettant la commande suivante depuis le terminal:
fab lr
Cela dépend fortement de la manière dont ces référentiels sont accédés. Il n’existe donc pas de réponse simple et uniforme:
git-daemon
et/ou gitweb
, vous pouvez consulter la configuration pour voir où elle conserve ses dépôts et répertorier le contenu de ce répertoire.HEAD
(par exemple, locate HEAD | grep \/HEAD$
), mais cela pourrait produire des faux positifs et affichera également les pensions qui sont uniquement des répertoires de travail locaux et qui ne sont pas partagées ou ont été sauvegardées. cloné à partir d'une autre source.